电子应用程序找不到 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 模块的主要内容,如果未能解决你的问题,请参考以下文章

电子 - 打字稿 - 找不到模块

找不到模块“电子”

Webpack 找不到模块“电子”

在 Mac 上构建后在电子应用程序中找不到模块

在 Electron + React + Webpack 设置中找不到模块“电子”

如何将 sqlite3 模块与电子一起使用?