错误:无法找到绑定文件 better-sqlite3.node

man*_*tra 5 javascript sqlite node.js node-gyp better-sqlite3

问题

\n\n

我的安装可能存在一些问题,better-sqlite3因为当我尝试执行我的index.js(单击以在pastebin上显示它)时

\n\n

node index.js

\n\n

总是有相同的结果。我在 MacOS 上尝试过,它可以工作,但在我的机器上基于 Linux Lite Ubuntu 的发行版中,它没有给我以下相同的错误:

\n\n
/home/mp8/webproject/electron-better-sqlite/node_modules/bindings/bindings.js:96\n  throw err\n  ^\n\nError: Could not locate the bindings file. Tried:\n \xe2\x86\x92 /home/mp8/webproject/electron-better-sqlite/node_modules/better-sqlite3/build/better_sqlite3.node\n \xe2\x86\x92 /home/mp8/webproject/electron-better-sqlite/node_modules/better-sqlite3/build/Debug/better_sqlite3.node\n \xe2\x86\x92 /home/mp8/webproject/electron-better-sqlite/node_modules/better-sqlite3/build/Release/better_sqlite3.node\n \xe2\x86\x92 /home/mp8/webproject/electron-better-sqlite/node_modules/better-sqlite3/out/Debug/better_sqlite3.node\n \xe2\x86\x92 /home/mp8/webproject/electron-better-sqlite/node_modules/better-sqlite3/Debug/better_sqlite3.node\n \xe2\x86\x92 /home/mp8/webproject/electron-better-sqlite/node_modules/better-sqlite3/out/Release/better_sqlite3.node\n \xe2\x86\x92 /home/mp8/webproject/electron-better-sqlite/node_modules/better-sqlite3/Release/better_sqlite3.node\n \xe2\x86\x92 /home/mp8/webproject/electron-better-sqlite/node_modules/better-sqlite3/build/default/better_sqlite3.node\n \xe2\x86\x92 /home/mp8/webproject/electron-better-sqlite/node_modules/better-sqlite3/compiled/8.11.3/linux/x64/better_sqlite3.node\n    at bindings (/home/mp8/webproject/electron-better-sqlite/node_modules/bindings/bindings.js:93:9)\n    at Object.<anonymous> (/home/mp8/webproject/electron-better-sqlite/node_modules/better-sqlite3/lib/database.js:4:40)\n    at Module._compile (module.js:652:30)\n    at Object.Module._extensions..js (module.js:663:10)\n    at Module.load (module.js:565:32)\n    at tryModuleLoad (module.js:505:12)\n    at Function.Module._load (module.js:497:3)\n    at Module.require (module.js:596:17)\n    at require (internal/module.js:11:18)\n    at Object.<anonymous> (/home/mp8/webproject/electron-better-sqlite/node_modules/better-sqlite3/index.js:2:18)\n
Run Code Online (Sandbox Code Playgroud)\n\n

我的目的是什么?

\n\n

我想使用 better-sqlie33 作为我的数据库,因为 sqlite3 不提供节点 8.x 及更高版本的支持。

\n\n

我尝试过的:

\n\n
    \n
  1. 这个故障排除指南第一和第二,但我仍然有同样的错误。

  2. \n
  3. make init,第一次安装better-sqlite3给了我错误文件 make/makefile 未找到。当我这样做时我遇到了同样的错误npm install better-sqlite3 --save

  4. \n
  5. 确保better_sqlite3.node位于我的节点模块路径上。是的,它不在那里。

  6. \n
\n\n

我想要的是?

\n\n

我想像在 Mac 上运行它一样正确运行我的index.js 。

\n\n

依赖关系

\n\n
\n

make init 之后的 package.json,如果不是它只是一个better-sqlite3 依赖项

\n
\n\n
{\n  "_from": "better-sqlite3",\n  "_id": "better-sqlite3@4.1.4",\n  "_inBundle": false,\n  "_integrity": "sha512-Y11HN9PQ9YUeKFMrmiHyOLAKElk2ATJzBZJvuzNwTMxoS7vUEEyLnUCtcBFqViLwbomr0RQwp2MBy/ogxF50PA==",\n  "_location": "/better-sqlite3",\n  "_phantomChildren": {},\n  "_requested": {\n    "type": "tag",\n    "registry": true,\n    "raw": "better-sqlite3",\n    "name": "better-sqlite3",\n    "escapedName": "better-sqlite3",\n    "rawSpec": "",\n    "saveSpec": null,\n    "fetchSpec": "latest"\n  },\n  "_requiredBy": [\n    "#USER",\n    "/"\n  ],\n  "_resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-4.1.4.tgz",\n  "_shasum": "9fe1dcf7b699087b98b1997cbb00261e265897e2",\n  "_spec": "better-sqlite3",\n  "_where": "/home/mp8/webproject/electron-better-sqlite",\n  "author": {\n    "name": "Joshua Wise",\n    "email": "joshuathomaswise@gmail.com"\n  },\n  "bugs": {\n    "url": "https://github.com/JoshuaWise/better-sqlite3/issues"\n  },\n  "bundleDependencies": false,\n  "dependencies": {\n    "bindings": "^1.3.0",\n    "integer": "^1.0.5"\n  },\n  "deprecated": false,\n  "description": "The fastest and simplest library for SQLite3 in Node.js.",\n  "devDependencies": {\n    "benchmark": "^2.1.4",\n    "chai": "^4.1.2",\n    "cli-color": "^1.2.0",\n    "fs-extra": "^5.0.0",\n    "mocha": "^4.1.0",\n    "sqlite": "^2.9.0"\n  },\n  "gypfile": true,\n  "homepage": "http://github.com/JoshuaWise/better-sqlite3",\n  "keywords": [\n    "sql",\n    "sqlite",\n    "sqlite3",\n    "custom",\n    "aggregate",\n    "database",\n    "transactions"\n  ],\n  "license": "MIT",\n  "name": "better-sqlite3",\n  "repository": {\n    "type": "git",\n    "url": "git://github.com/JoshuaWise/better-sqlite3.git"\n  },\n  "scripts": {\n    "benchmark": "node benchmark",\n    "install": "node-gyp rebuild",\n    "install-debug": "node-gyp rebuild --debug",\n    "lzz": "lzz -hx hpp -sx cpp -k BETTER_SQLITE3 -d -hl -sl -e ./src/better_sqlite3.lzz",\n    "posttest": "rm -r ./temp/",\n    "prepublishOnly": "npm run lzz",\n    "pretest": "rm -r ./temp/ || true && mkdir ./temp/",\n    "rebuild": "npm run lzz && node-gyp rebuild",\n    "rebuild-debug": "npm run lzz && node-gyp rebuild --debug",\n    "test": "$(npm bin)/mocha --bail --timeout 5000 --slow 5000"\n  },\n  "version": "4.1.4"\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n
\n

我的机器

\n
\n\n
Linux Lite 4.0, Ubuntu Based.\nNVM (Node version Manager)\nNode 8.11.1\nNPM 5.6\n
Run Code Online (Sandbox Code Playgroud)\n

小智 5

我遇到了一个看起来像你的问题的问题

尝试一下:

项目托托 > $sudo rm -rf node_modules/

项目托托 > $npm install bindings

npm 关于绑定 -> https://www.npmjs.com/package/bindings