打包的Electron应用程序找不到模块sqlite3

打包的Electron应用程序找不到模块sqlite3,sqlite,electron,Sqlite,Electron,背景 在Electron应用程序中,sqlite3在npm安装--save之后不能立即工作。我在做了一些网络调查后,通过: (1) 降级我的节点版本(通过n)以匹配Electron的节点版本;及 (2) 使用此package.json脚本使用正确的模块名/目标重建sqlite: “rebuild-sqlite3”:“cd node_modules/sqlite3&&npm run prepublish&&node gyp configure--module_name=node_sqlite3--

背景

在Electron应用程序中,sqlite3在
npm安装--save之后不能立即工作。我在做了一些网络调查后,通过:

(1) 降级我的节点版本(通过
n
)以匹配Electron的节点版本;及

(2) 使用此
package.json
脚本使用正确的模块名/目标重建sqlite:
“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\u modules/.bin/webpack-p&./node\u modules/electron-packager/cli.js./--out./bin--platform=darwin--arch=x64--version=1.2.6--overwrite--ignore=\“ignore | bin | node\u modules\”

当我双击创建的(appName).app打开应用程序时,控制台会抱怨:`Uncaught Error:找不到模块

问题:


如何在最终打包的产品中找到sqlite3?即使是“黑客”或变通方法也是受欢迎的,因为我尝试了各种修复方法,但都没有效果。

你传递给
electron packager
节点模块
目录中的所有内容不都被忽略吗,安装sqlite3模块的地方?

我把这个答案留给那些有同样问题的人,他们正在浪费时间去弄清楚

步骤1

npm安装sqlite3

electron.

我希望工作顺利。但我有一个错误“找不到节点模块sqlite3”

步骤2

npm安装电子重建--保存开发文件

electron重建-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\"",
步骤3

我花了很多时间来弄清楚。最后,我明白了解决方案是使用electron packager API并将afterCopy与electron rebuild集成。

# 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

参考文献


谢谢,我先试试这个。我使用的打包命令取自一个web示例;我可能对此做了一些不正确的假设。我遇到了完全相同的问题,但我没有在忽略节点单元模块中包含任何内容。你找到解决办法了吗?你找到解决办法了吗?我面临着同样的问题,这似乎是最正确地描述它的问题。这个问题值得回答:)这是很久以前的事了。我最终还是让它工作了,但不记得步骤了。它们与Adi在此处发布的解决方案类似: