繁体   English   中英

在 node.js 中安装 sqlite3 时出错

[英]Error installing sqlite3 in node.js

我在 node.js 中安装 package 时遇到问题。 我的 npm 版本是 2.14.3,我需要安装 sqlite3 package。 在我的项目路径中,我使用了这个命令:“npm install sqlite3 --save”我有下一个错误:

npm WARN package.json node-sqlite@1.0.1 No description npm WARN package.json node-sqlite@1.0.1 No repository field. npm WARN package.json node-sqlite@1.0.1 No README data npm WARN package.json node-sqlite@1.0.1 No license field. /

sqlite3@3.1.8 install /home/pi/Desktop/node-sqlite_Sockets/node_modules/sqlite3 node-pre-gyp install --fallback-to-build node-pre-gyp ERR:尝试下载(403): https:/ /mapbox-node-binary.s3.amazonaws.com/sqlite3/v3.1.8/node-v46-linux-arm.tar.gz node-pre-gyp ERR。 未找到用于 sqlite3@3.1.8 和 node@4.1:0 (node-v46 ABI) 的预构建二进制文件(回退到使用 node-gyp 进行源代码编译)make。 进入目录 '/home/pi/Desktop/node-sqlite_Sockets/node_modules/sqlite3/build' ACTION deps_sqlite3_gyp_action_before_build_target_unpack_sqlite_dep 发布/obj/gen/sqlite-autoconf-3150000/sqlite3.c TObefore_buildsttarget CC/dps_sqlite3_tobefore_buildstamp.action. (目标) Release/obj.target/sqlite3/gen/sqlite-autoconf-3150000/sqlite3.o Release/obj/gen/sqlite-autoconf-3150000/sqlite3:c:199451:1: 致命错误。 打开依赖文件。/Release/.deps/Release/obj.target/sqlite3/gen/sqlite-autoconf-3150000/sqlite3.od:raw。 没有此类文件或目录编译终止。 deps/sqlite3.target:mk:120。 目标“Release/obj.target/sqlite3/gen/sqlite-autoconf-3150000/sqlite3:o”的配方失败了。 *** [Release/obj.target/sqlite3/gen/sqlite-autoconf-3150000/sqlite3:o] 错误 1 make: 离开目录 '/home/pi/Desktop/node-sqlite_Sockets/node_modules/sqlite3/build' gyp ERR ! 构建错误 gyp ERR! 堆栈错误: make失败,退出代码:2 gyp ERR。 ChildProcess.onExit 处的堆栈(/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/build:js:270.23) gyp ERR:emitTwo 处的堆栈(事件:js.87.13) gyp ERR:ChildProcess 处的堆栈:emit (events.js.172.7) gyp ERR。 堆栈在 Process:ChildProcess:_handle.onexit (internal/child_process.js.200.12) gyp ERR。 系统 Linux 4.4.21-v7+ gyp ERR。 命令 "/usr/local/bin/node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp:js" "build" "--fallback-to-build" " --module=/home/pi/Desktop/node-sqlite_Sockets/node_modules/sqlite3/lib/binding/node-v46-linux-arm/node_sqlite3.node" "--module_name=node_sqlite3" "--module_path=/home/ pi/Desktop/node-sqlite_Sockets/node_modules/sqlite3/lib/binding/node-v46-linux-arm" gyp ERR。 cwd /home/pi/Desktop/node-sqlite_Sockets/node_modules/sqlite3 gyp ERR。 节点-v v4.1:0 gyp ERR:节点-gyp -v v3.0:3 gyp ERR:不正常节点-pre-gyp ERR。 构建错误节点pre-gyp ERR。 堆栈错误:无法执行 '/usr/local/bin/node /usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp:js build --fallback-to-build --module =/home/pi/Desktop/node-sqlite_Sockets/node_modules/sqlite3/lib/binding/node-v46-linux-arm/node_sqlite3.node --module_name=node_sqlite3 --module_path=/home/pi/Desktop/node-sqlite_Sockets /node_modules/sqlite3/lib/binding/node-v46-linux-arm' (1) node-pre-gyp ERR: Stack at ChildProcess: (/home/pi/Desktop/node-sqlite_Sockets/node_modules/sqlite3/node_modules/node -pre-gyp/lib/util/compile.js.83.29) 节点-pre-gyp ERR。 在 emitTwo (events:js:87.13) node-pre-gyp ERR 处堆栈。 ChildProcess.emit (events.js.172.7) node-pre-gyp ERR 的堆栈。 堆栈在可能关闭(内部/child_process.js.817.16)节点预gyp ERR。 Process.ChildProcess._handle.onexit (internal/child_process.js.211.5) node-pre-gyp ERR: System Linux 4.4.21-v7+ node-pre-gyp ERR 的堆栈! 命令“/usr/local/bin/node”“/home/pi/Desktop/node-sqlite_Sockets/node_modules/sqlite3/node_modules/.bin/node-pre-gyp”“安装”“--fallback-to-build”节点预gyp错误! cwd /home/pi/Desktop/node-sqlite_Sockets/node_modules/sqlite3 node-pre-gyp ERR! node -v v4.1.0 node-pre-gyp 错误! node-pre-gyp -v v0.6.31 node-pre-gyp 错误! 不行 无法执行 '/usr/local/bin/node /usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js build --fallback-to-build --module= /home/pi/Desktop/node-sqlite_Sockets/node_modules/sqlite3/lib/binding/node-v46-linux-arm/node_sqlite3.node --module_name=node_sqlite3 --module_path=/home/pi/Desktop/node-sqlite_Sockets/ node_modules/sqlite3/lib/binding/node-v46-linux-arm' (1) npm 错误! Linux 4.4.21-v7+ npm 错误! argv "/usr/local/bin/node" "/usr/local/bin/npm" "install" "sqlite3" "--save" npm 错误! 节点 v4.1.0 npm 错误! npm v2.14.3 npm 错误! 代码 ELIFECYCLE npm 错误! sqlite3@3.1.8 安装: node-pre-gyp install --fallback-to-build npm ERR。 退出状态 1 npm ERR。 npm 错误。 在 sqlite3@3,1.8 安装脚本“node-pre-gyp install --fallback-to-build”失败:npm ERR:这很可能是 sqlite3 package 的问题。 npm ERR:与 npm 本身无关。 npm 错误! 告诉作者这在您的系统上失败:npm ERR! node-pre-gyp install --fallback-to-build npm 错误! 您可以通过以下方式获取他们的信息:npm ERR! npm 所有者 ls sqlite3 npm 错误! 上面可能还有额外的日志记录 output。 npm 错误! 请在任何支持请求中包含以下文件:npm ERR!
/home/pi/Desktop/node-sqlite_Sockets/npm-debug.log

如果我尝试执行我的 node.js 程序,我会遇到下一个错误:

module.js:338 抛出错误; ^ 错误:在 Function.Module._resolveFilename (module.js:336) 处找不到模块 '/home/pi/Desktop/node-sqlite_Sockets/node_modules/sqlite3/lib/binding/node-v46-linux-arm/node_sqlite3.node' :15) 在 Function.Module._load (module.js:286:25) 在 Module.require (module.js:365:17) 在要求 (module.js:384:17) 在 Object。 (/home/pi/Desktop/node-sqlite_Sockets/node_modules/sqlite3/lib/sqlite3.js:4:15) 在 Module._compile (module.js:434:26) 在 Object.Module._extensions..js (module .js:452:10) 在 Module.load (module.js:355:32) 在 Function.Module._load (module.js:310:12) 在 Module.require (module.js:365:17)

更新后(npm install -g npm)

npm WARN checkPermissions Missing write access to /usr/local/lib/node_modules/npm npm WARN checkPermissions Missing write access to /usr/local/lib/node_modules /usr/local/lib └── npm@3.10.9 npm ERR. Linux 4.4.21-v7+ npm 错误。 argv "/usr/local/bin/node" "/usr/local/bin/npm" "install" "-g" "npm" npm ERR。 node v4.1:0 npm ERR: npm v3,10:9 npm ERR: path /usr/local/lib/node_modules/npm npm ERR, code EACCES npm ERR: errno -13 npm ERR, syscall access npm ERR! 错误:EACCES:权限被拒绝,访问 '/usr/local/lib/node_modules/npm' npm ERR! 在错误(本机)npm ERR! { [错误:EACCES:权限被拒绝,访问'/usr/local/lib/node_modules/npm'] npm ERR! 错误号:-13,npm 错误!
代码:“EACCES”,npm ERR:系统调用,“访问”:npm ERR。 路径:'/usr/local/lib/node_modules/npm'} npm 错误! npm 错误! 请尝试以 root/管理员身份再次运行此命令。 npm 错误! 请在任何支持请求中包含以下文件:npm ERR!
/home/pi/Desktop/node-sqlite_Sockets/npm-debug.log

有人知道如何解决吗? 提前致谢!

此致。

你之前在另一个应用程序上安装过 sqlite3 吗? 因为您的缓存文件可能已损坏。 尝试从缓存中删除它npm cache clean sqlite3或清洁您与全缓存npm cache clean并重新运行安装脚本。

编辑:在您编辑您的问题之后。 这似乎是一个权限错误。 尝试使用sudo npm install -g npm运行 npm update

总结:这是一个旧的 npm 版本的问题。 更新到新版本通过运行sudo npm install -g npm解决了这个问题。

不同 stackoverflow 线程中的所有答案都不适合我。

删除了缓存删除了锁定文件,安装了另一个版本的 Node,更新了 NPM等,但它们都不起作用。 也许我的回答是题外话,但是如果您只想立即完成工作,您可以使用其他工具(如yarn )安装所需的软件包:

yarn add <package>

相当于

npm i --save <package>

例如, SQLite3Sequelize无法使用NPM安装在我的计算机上,而我可以使用Yarn安装它。

这在 Windows 10 上对我有用。

npm uninstall sqlite3
npm cache clean
npm install sqlite3

On linux you should check that you have python installed python --version , if not, you should check this https://stackoverflow.com/a/46245617/9477206

这对我有用:

  • 首先,我安装了 Visual C++ 2013,然后通过运行npm config set msvs_version 2013 --global全局npm config set msvs_version 2013 --global

  • 然后我通过运行npm install node-gyp -g node-gyp

  • 最后,我通过运行npm install sqlite3安装了 Sqlite3

希望这能帮助别人,因为它帮助了我

这对我有用:

  • 以前的应用程序目录是/My Files/TestApp并且它总是抛出该错误。
  • 根据https://github.com/mapbox/node-sqlite3/issues/1538上的建议,我将目录移动到路径中没有空格的另一个目录( /FolderNameWithoutSpaces/TestApp
  • 它奏效了

macOS Monterey v12.1 节点版本:v17.3.1 npm 版本:v8.3.0

这可能不是上述问题的确切答案,但对某些人来说,它会起作用。

2022 年编辑:请检查 sqlite npm 文档中支持的 Node 版本并使用支持的 Node 版本(主要是通过使用 nvm 降级)

对我来说,节点版本是 v16.x,而 Sqlite 最大支持版本是 v12.x,所以我降级了,问题就解决了!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM