错误:找不到绑定文件 better-sqlite3.node
Posted
技术标签:
【中文标题】错误:找不到绑定文件 better-sqlite3.node【英文标题】:Error: Could not locate the bindings file better-sqlite3.node 【发布时间】:2018-12-02 12:33:03 【问题描述】:问题
我的better-sqlite3
安装可能存在一些问题,因为当我尝试使用
node index.js
总会有相同的结果。我在 MacOS 上试过,它可以工作,但在我的机器上基于 Linux Lite Ubuntu 的发行版不是它给了我以下同样的错误:
/home/mp8/webproject/electron-better-sqlite/node_modules/bindings/bindings.js:96
throw err
^
Error: Could not locate the bindings file. Tried:
→ /home/mp8/webproject/electron-better-sqlite/node_modules/better-sqlite3/build/better_sqlite3.node
→ /home/mp8/webproject/electron-better-sqlite/node_modules/better-sqlite3/build/Debug/better_sqlite3.node
→ /home/mp8/webproject/electron-better-sqlite/node_modules/better-sqlite3/build/Release/better_sqlite3.node
→ /home/mp8/webproject/electron-better-sqlite/node_modules/better-sqlite3/out/Debug/better_sqlite3.node
→ /home/mp8/webproject/electron-better-sqlite/node_modules/better-sqlite3/Debug/better_sqlite3.node
→ /home/mp8/webproject/electron-better-sqlite/node_modules/better-sqlite3/out/Release/better_sqlite3.node
→ /home/mp8/webproject/electron-better-sqlite/node_modules/better-sqlite3/Release/better_sqlite3.node
→ /home/mp8/webproject/electron-better-sqlite/node_modules/better-sqlite3/build/default/better_sqlite3.node
→ /home/mp8/webproject/electron-better-sqlite/node_modules/better-sqlite3/compiled/8.11.3/linux/x64/better_sqlite3.node
at bindings (/home/mp8/webproject/electron-better-sqlite/node_modules/bindings/bindings.js:93:9)
at Object.<anonymous> (/home/mp8/webproject/electron-better-sqlite/node_modules/better-sqlite3/lib/database.js:4:40)
at Module._compile (module.js:652:30)
at Object.Module._extensions..js (module.js:663:10)
at Module.load (module.js:565:32)
at tryModuleLoad (module.js:505:12)
at Function.Module._load (module.js:497:3)
at Module.require (module.js:596:17)
at require (internal/module.js:11:18)
at Object.<anonymous> (/home/mp8/webproject/electron-better-sqlite/node_modules/better-sqlite3/index.js:2:18)
我的目的是什么?
我想使用 better-sqlie33 作为我的数据库,因为 sqlite3 不支持 node 8.x 及更高版本。
我尝试了什么:
这个故障排除指导号one and two,但我还是出现同样的错误。
make init
,第一次安装better-sqlite3
给了我错误文件make/makefile not found。我在npm install better-sqlite3 --save
确保 better_sqlite3.node 在我的 node-modules 路径上。是的,它不存在。
我想要什么?
我想正确运行我的index.js,就像我在 Mac 上运行它一样。
依赖关系
make init 之后的package.json,如果不是,它只是一个
better-sqlite3
依赖项
"_from": "better-sqlite3",
"_id": "better-sqlite3@4.1.4",
"_inBundle": false,
"_integrity": "sha512-Y11HN9PQ9YUeKFMrmiHyOLAKElk2ATJzBZJvuzNwTMxoS7vUEEyLnUCtcBFqViLwbomr0RQwp2MBy/ogxF50PA==",
"_location": "/better-sqlite3",
"_phantomChildren": ,
"_requested":
"type": "tag",
"registry": true,
"raw": "better-sqlite3",
"name": "better-sqlite3",
"escapedName": "better-sqlite3",
"rawSpec": "",
"saveSpec": null,
"fetchSpec": "latest"
,
"_requiredBy": [
"#USER",
"/"
],
"_resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-4.1.4.tgz",
"_shasum": "9fe1dcf7b699087b98b1997cbb00261e265897e2",
"_spec": "better-sqlite3",
"_where": "/home/mp8/webproject/electron-better-sqlite",
"author":
"name": "Joshua Wise",
"email": "joshuathomaswise@gmail.com"
,
"bugs":
"url": "https://github.com/JoshuaWise/better-sqlite3/issues"
,
"bundleDependencies": false,
"dependencies":
"bindings": "^1.3.0",
"integer": "^1.0.5"
,
"deprecated": false,
"description": "The fastest and simplest library for SQLite3 in Node.js.",
"devDependencies":
"benchmark": "^2.1.4",
"chai": "^4.1.2",
"cli-color": "^1.2.0",
"fs-extra": "^5.0.0",
"mocha": "^4.1.0",
"sqlite": "^2.9.0"
,
"gypfile": true,
"homepage": "http://github.com/JoshuaWise/better-sqlite3",
"keywords": [
"sql",
"sqlite",
"sqlite3",
"custom",
"aggregate",
"database",
"transactions"
],
"license": "MIT",
"name": "better-sqlite3",
"repository":
"type": "git",
"url": "git://github.com/JoshuaWise/better-sqlite3.git"
,
"scripts":
"benchmark": "node benchmark",
"install": "node-gyp rebuild",
"install-debug": "node-gyp rebuild --debug",
"lzz": "lzz -hx hpp -sx cpp -k BETTER_SQLITE3 -d -hl -sl -e ./src/better_sqlite3.lzz",
"posttest": "rm -r ./temp/",
"prepublishOnly": "npm run lzz",
"pretest": "rm -r ./temp/ || true && mkdir ./temp/",
"rebuild": "npm run lzz && node-gyp rebuild",
"rebuild-debug": "npm run lzz && node-gyp rebuild --debug",
"test": "$(npm bin)/mocha --bail --timeout 5000 --slow 5000"
,
"version": "4.1.4"
我的机器
Linux Lite 4.0, Ubuntu Based.
NVM (Node version Manager)
Node 8.11.1
NPM 5.6
【问题讨论】:
【参考方案1】:我遇到了一个看起来像你的问题的问题
试试吧:
projectToto > $sudo rm -rf node_modules/
projectToto > $npm install bindings
关于绑定的 npm -> https://www.npmjs.com/package/bindings
【讨论】:
它无法解决我的问题,我已经通过卸载节点解决了它并重新安装。还是不知道为什么【参考方案2】:我遇到了类似的情况,直到我意识到我没有在那台机器上明确安装构建工具。这是从项目目录中运行时为我解决的问题(Ubuntu)
$ rm -rf node_modules/
$ rm package-lock.json
$ npm install build-tools -g
$ npm install
【讨论】:
【参考方案3】:对我来说,问题原来是我的项目中的循环依赖(角度 10.1.1,节点 12.22.6)。
弄清楚这一点有点棘手。 Angular 编译器给出了多个“检测到循环依赖项中的警告:...”错误,但没有一个包含实际引入错误的文件。我不得不将项目退回到没有出现问题的提交,然后调查发生了什么变化。这种变化似乎很无害——一个文件导出了一个由另一个文件导入的常量。改变导出的方向解决了这个问题。
【讨论】:
以上是关于错误:找不到绑定文件 better-sqlite3.node的主要内容,如果未能解决你的问题,请参考以下文章
Enmap 无法安装,出现 better-sqlite3 错误