2016-07-26 79 views
2

背景電子封裝應用程序無法找到模塊sqlite3的

中電子應用,sqlite3的不npm install --save後馬上工作。 (1)通過n降級我的節點版本以匹配Electron的節點版本;和

(2)重建的SQLite與此package.json腳本正確的模塊名稱/目標: "rebuild-sqlite3": "cd node_modules/sqlite3 && npm run prepublish && node-gyp configure --module_name=node_sqlite3 --module_path=../lib/binding/electron-v1.2-darwin-x64 && node-gyp rebuild --target=1.2.6 --arch=x64 --target_platform=darwin --dist-url=https://atom.io/download/atom-shell --module_name=node_sqlite3 --module_path=../lib/binding/electron-v1.2-darwin-x64"

之後,SQLITE3工程發展(即當我運行在項目目錄electron .)。

問題

我包與electron-packager應用:"./node_modules/.bin/webpack -p && ./node_modules/electron-packager/cli.js ./ --out ./bin --platform=darwin --arch=x64 --version=1.2.6 --overwrite --ignore=\"ignore|bin|node_modules\""

當我通過打開應用程序雙擊創建(應用程序名稱)。應用程序,控制檯抱怨:'未捕獲的錯誤:無法找到模塊

問題

我怎樣才能獲得的sqlite3在最終packag找到ed產品?即使是「黑客」或解決方法也是受歡迎的,因爲我嘗試了各種修補程序而無濟於事。

+0

你有沒有找到解決方案?我面臨同樣的問題,這似乎是最正確地描述它的問題。這個問題值得回答:) –

+0

這是前一陣子。我最終確實得到了它的工作,但不記得這些步驟。他們與Adi在這裏發佈的解決方案類似:https://stackoverflow.com/questions/38716594/electron-app-cant-find-sqlite3-module – Aaron

回答

1

您傳遞給electron-packager--ignore=\"ignore|bin|node_modules\"是不是忽略了node_modules目錄中的所有內容,sqlite3模塊的安裝位置?

+0

謝謝,我會先試試這個。我使用的打包命令來自一個web示例;我可能對此做了一些不正確的假設。 – Aaron

+0

我有完全相同的問題,但我沒有包含任何內容忽略node_modules。你找到解決方案嗎? – CD1212

1

我離開這個答案的人有同樣的問題,並正在浪費他們的時間弄清楚。

第一步

npm install sqlite3

electron .

我預計正常工作。但我有一個錯誤 '無法找到節點模塊sqlite3的'

第二步

npm install electron-rebuild --save-dev

electron-rebuild -f -w sqlite3

electron .

它的工作。

但是如果您使用'electron-packager'打包並生成可執行文件,它就不起作用。發生同樣的錯誤。

"electron-packager . electron-tutorial-app --overwrite --asar --platform=win32 --arch=ia32 --icon=assets/icons/win/icon.ico --prune=true --out=new --version-string.CompanyName=CE --version-string.FileDescription=CE --version-string.ProductName=\"Electron Test\"", 

第三步:

我花了相當多的時間來弄清楚。最後,我想通了。 該解決方案使用電子包裝API並在電子重建後進行集成。

# build.js 
const packager = require('electron-packager'); 
const rebuild = require('electron-rebuild'); 

packager({ 
    dir: '../dir', 
    overwrite: true, 
    asar: true, 
    platform: 'win32', 
    arch: 'ia32', 
    icon: 'assets/icons/win/icon.ico', 
    prune: true, 
    out: 'hello', 
    executableName: 'hello', 
    afterCopy: [(buildPath, electronVersion, platform, arch, callback) => { 
    rebuild.rebuild({ buildPath, electronVersion, arch }) 
     .then(() => callback()) 
     .catch((error) => callback(error)); 
    }], 
}) 

node build.js

參考