2016-07-26 77 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

参考