【问题标题】:Electron app cant find sqlite3 module电子应用程序找不到 sqlite3 模块
【发布时间】: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。你如何安装一个模块来使用电子?

【问题讨论】:

  • 你有什么解决办法吗?

标签: node.js sqlite npm electron


【解决方案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'
    • stackoverflow.com/questions/41307807/…这个有什么解决办法
    • 我得到了错误npm ERR! missing script: prepublish
    猜你喜欢
    • 2016-11-30
    • 2016-06-25
    • 1970-01-01
    • 2017-02-02
    • 2020-06-28
    • 2016-07-10
    • 1970-01-01
    • 2018-07-13
    • 2016-02-28
    相关资源
    最近更新 更多