电子应用程序找不到 sqlite3 模块
Posted
技术标签:
【中文标题】电子应用程序找不到 sqlite3 模块【英文标题】:Electron app cant find sqlite3 module 【发布时间】:2016-12-07 13:57:17 【问题描述】:在我的电子应用程序中,我通过 npm 安装了 sqlite3
npm install sqlite3
但是一旦我尝试与数据库交互,它就找不到数据库,这里是日志:
未捕获的错误:找不到模块 'D:\play\electron-quick-start\node_modules\sqlite3\lib\binding\electron-v1.3-win32-x64\node_sqlite3.node'
这里是JS代码:
console.log('whooooo');
var sqlite3 = require('sqlite3').verbose();
var db = new sqlite3.Database('../db/info.db');
db.serialize(function ()
db.run("CREATE TABLE lorem (info TEXT)");
var stmt = db.prepare("INSERT INTO lorem VALUES (?)");
for (var i = 0; i < 10; i++)
stmt.run("Ipsum " + i);
stmt.finalize();
db.each("SELECT rowid AS id, info FROM lorem", function (err, row)
console.log(row.id + ": " + row.info);
);
);
db.close();
我也是这样尝试的:
npm install sqlite3 --build-from-source
但安装失败!
另外,我正在使用 Python3。你如何安装一个模块来使用电子?
【问题讨论】:
你有什么解决办法吗? 【参考方案1】:您刚刚安装了sqlite3
模块,但您需要重新构建它才能在特定平台上运行。你需要electron-rebuild
包来重建二进制文件。
从您的项目目录运行命令npm i --save-dev electron-rebuild
。安装后 ˚electron-rebuild
。运行以下命令为您的平台构建 sqlite3 二进制文件。
./node_modules/.bin/electron-rebuild -w sqlite3 -p
如果重建失败,运行npm install
,然后再次运行上述命令。
【讨论】:
这对我不起作用。它告诉我'。未被识别为内部或外部命令、可运行程序或批处理文件。 转到 /node_modules/.bin/ 并在那里打开终端。运行命令“电子重建 -w sqlite3 -p” 原来失败了,因为我没有 python 2.7,安装 2.7 后出现此错误pastebin.com/xmhsG85A 在开始构建 sqlite3 模块之前,您必须安装 windows 构建工具、vc++ 和 python。下载并安装 VC++ 2015.3 v140 工具集 (x86,x64) 花了一些时间来下载构建工具,但之后,我重新运行了 cmd,它工作了:D 已经测试了 SQLite 的一些功能,一切似乎都在工作。 TYSM!我几乎放弃了在电子中使用 SQLite 的尝试,因为其他方法都不起作用!【参考方案2】:如果这些都不起作用,试试这个。
npm install electron-builder
将此添加到 package.json 文件的脚本标记中
"postinstall": "electron-builder install-app-deps"
然后执行这个
npm run postinstall
这节省了我很多时间
【讨论】:
【参考方案3】:1:在Package.json文件中包含rebuild并安装npm electron-rebuild
"name": "electron-quick-start",
"version": "1.0.0",
"description": "A minimal Electron application",
"main": "main.js",
"scripts":
"start": "electron .",
"rebuild": "electron-rebuild -f -w sqlite3"
,
"repository": "https://github.com/electron/electron-quick-start",
"keywords": [
"Electron",
"quick",
"start",
"tutorial",
"demo"
],
"author": "author",
"license": "CC0-1.0",
"devDependencies":
"@types/file-saver": "0.0.1",
"electron": "1.7",
"electron-rebuild": "^1.6.0"
,
"dependencies":
"sqlite3": "^3.1.13"
2:安装python 2.7并将其路径添加到环境变量,例如C:\Python27;
3: npm INSTALL 然后 npm 运行重建
【讨论】:
+1 for ("rebuild": "electron-rebuild -f -w sqlite3"),在终端运行命令“npm run rebuild”后解决了我的问题【参考方案4】:首先:
npm install electron-rebuild
然后多试几次:
./node_modules/.bin/electron-rebuild -w sqlite3 -p
【讨论】:
完美运行,如果在 Windows 上使用一些 bash 客户端(我使用 git bash) 第二步失败,提示我 'node-gyp' 有错误的代理,但我不知道如何更改 node-gyp 的代理设置 这适用于我在使用 better-sqlite3 时遇到的问题 ./node_modules/.bin/electron-rebuild -w Better-sqlite3 -p :) 但不适用于 sqlite3 :( ...我正在尝试这两个模块并且在使两个模块都工作时遇到了问题,所以这至少让我可以使用其中一个继续前进。谢谢 这是在 macos catalina 上为我完成的【参考方案5】:你必须使用基于 Electron 的配置来构建这个原生模块。
尝试:
1.cd node_modules/sqlite3
2.npm run prepublish
3.node-gyp configure --module_name=node_sqlite3 --module_path=../lib/binding/electron-v1.3-win32-x64
4.node-gyp rebuild --target=1.3.1 --arch=x64 --target_platform=win32 --dist-url=https://atom.io/download/atom-shell --module_name=node_sqlite3 --module_path=../lib/binding/electron-v1.3-win32-x64
这是假设您拥有最新版本的电子。您可以更改配置以匹配您的电子版本。
【讨论】:
工作就像一个魅力,谢谢,记住如果你没有节点 gyp,在做这些事情之前安装它.. 这对我不起作用。这个错误有什么解决办法吗?错误是:未捕获错误:找不到模块'path_to_project\node_modules\sqlite3\lib\binding\electron-v1.4-win32-ia32\node_sqlite3.node' ***.com/questions/41307807/…这个有什么解决办法 我得到了错误npm ERR! missing script: prepublish
以上是关于电子应用程序找不到 sqlite3 模块的主要内容,如果未能解决你的问题,请参考以下文章