錯誤訊息如下:
Error: Cannot find module 'C:\Users\hialan\electron-app\node_modules\
sqlite3\lib\binding\node-v47-win32-x64\node_sqlite3.node'
at Function.Module._resolveFilename (module.js:338:15)
at Function.Module._load (module.js:289:25)
這是因為 electron 嘗試要去找 node_modules\sqlite3\lib\binding\node-v47-win32-x64 但是我們安裝下來的 sqlite 卻只有 node_modules\sqlite3\lib\binding\node-v46-win32-x64,因此就找不到 module 摟。
後來找到了這一篇文章,照著的說明就可以成功的在 windows 以及 mac 上重新編譯 node_sqlite3 正常執行了。以下將步驟節錄在此。
依照 electron 的文件,node-gyp 可以幫助我們重新編譯 module。
如果是 windows ,要記得安裝編譯器,可以參考這篇文章 在 windows 安裝 electron-prebuilt。
主要的指令為
$ cd node_modules/sqlite3 && npm run prepublish
$ node-gyp configure --module_name=node_sqlite3 --module_path=../lib/binding/node-v47-win32-x64
$ node-gyp rebuild --target=0.36.2 --arch=x64 --target_platform=win32 --dist-url=https://atom.io/download/atom-shell --module_name=node_sqlite3 --module_path=../lib/binding/node-v47-win32-x64
- --target 是我們 electron 的版本,目前我用的是 0.36.2
- 可以用 ./node_modules/.bin/electron -v 看到你的版本
- --module_path 是 electron 要找的路徑
- --target_platform 是你的作業系統
- Windows 為 win32
- Mac 為 darwin
- --arch 為你的 CPU 架構
$ npm config get user-agent
npm/2.14.12 node/v4.2.4 win32 x64
第三個是 target_platform, 第四個是 arch
把他合成一行加入我們的 package.json 的 script ,變成
"scripts": {
"rebuild-sqlite3-win32": "cd node_modules/sqlite3 && npm run prepublish && node-gyp configure --module_name=node_sqlite3 --module_path=../lib/binding/node-v47-win32-x64 && node-gyp rebuild --target=0.36.2 --arch=x64 --target_platform=win32 --dist-url=https://atom.io/download/atom-shell --module_name=node_sqlite3 --module_path=../lib/binding/node-v47-win32-x64",
"rebuild-sqlite3-darwin": "cd node_modules/sqlite3 && npm run prepublish && node-gyp configure --module_name=node_sqlite3 --module_path=../lib/binding/node-v47-darwin-x64 && node-gyp rebuild --target=0.36.2 --arch=x64 --target_platform=darwin --dist-url=https://atom.io/download/atom-shell --module_name=node_sqlite3 --module_path=../lib/binding/node-v47-darwin-x64"
}
就可以
- 編譯 windows: npm run rebuild-sqlite3-win32
- 編譯 mac: npm run rebuild-sqlite3-darwin
沒有留言:
張貼留言