无法 NPM 在节点 6.x 中安装 SQLite3

Posted

技术标签:

【中文标题】无法 NPM 在节点 6.x 中安装 SQLite3【英文标题】:Can't NPM install SQLite3 in node 6.x 【发布时间】:2017-03-02 21:11:54 【问题描述】:

我一直在做很多研究,但在这里却一无所获。这是一个又长又丑的IMO。我绝对可以浏览并成功下载错误中首先引用的 tar.gz。我所有其他 NPM 安装运行良好。我不是 SQLite3 的忠实粉丝,但我有一个项目需要为一些同事演示。任何帮助安装它都将不胜感激。

sqlite3@3.1.6 安装 C:\WS\linked10\linkedout\node_modules\sqlite3 node-pre-gyp install --fallback-to-build

node-pre-gyp 错误!尝试下载: https://mapbox-node-binary.s3.amazonaws.com /sqlite3/v3.1.6/node-v48-win32-x64.tar.gz node-pre-gyp 错误!预建 找不到 sqlite3@3.1.6 和 node@6.7.0 (node-v48 ABI) 的二进制文件 (回退到使用 node-gyp 进行源代码编译)

C:\WS\linked10\linkedout\node_modules\sqlite3>如果没有定义 npm_config_node_gyp (节点 "C:\Program 文件\nodejs\node_modules\npm\bin\node-gyp-bin\....\node_mo dules\node-gyp\bin\node-gyp.js" clean ) else (node "" clean )

C:\WS\linked10\linkedout\node_modules\sqlite3>如果没有定义 npm_config_node_gyp (节点 "C:\Program 文件\nodejs\node_modules\npm\bin\node-gyp-bin\....\node_mo dules\node-gyp\bin\node-gyp.js" 配置 --fallback-to-build --module=C:\WS\linked10\linkedout\node_modules\sqlite3\lib\binding\node-v48-win32-x64\node_sqlite3 .node --module_name=node_sqlite3 --module_path=C:\WS\linked10\linkedout\node_mod ules\sqlite3\lib\binding\node-v48-win32-x64 )否则(节点“”配置 --fallback k-to-build --module=C:\WS\linked10\linkedout\node_modules\sqlite3\lib\binding\no de-v48-win32-x64\node_sqlite3.node --module_name=node_sqlite3 --module_path=C:\WS\linked10\linkedout\node_modules\sqlite3\lib\binding\node-v48-win32-x64 ) 吉普 错误!配置错误gyp ERR!堆栈错误:找不到 Python 可执行“python”,您可以设置 PYT HON 环境变量。吉普错误! 堆栈在 failNoPython (C:\Program 文件\nodejs\node_modules\npm\nod e_modules\node-gyp\lib\configure.js:401:14) gyp 错误!堆栈在 C:\Program Files\nodejs\node_modules\npm\node_modules\node -gyp\lib\configure.js:356:11 gyp 错误!堆栈在 FSReqWrap.oncomplete (fs.js:123:15) gyp ERR!系统视窗_NT 6.1.7601 gyp 错误!命令 "C:\Program Files\nodejs\node.exe" "C:\Program Files\nodej s\node_modules\npm\node_modules\node-gyp\bin\node-gyp.js" “配置” “--f allback-to-build” "--module=C:\WS\linked10\linkedout\node_modules\sqlite3\ lib\binding\node-v48-win32-x64\node_sqlite3.node" “--module_name=node_sqlite3” "--module_path=C:\WS\linked10\linkedout\node_modules\sqlite3\lib\bindin g\node-v48-win32-x64" gyp ERR! cwd C:\WS\linked10\linkedout\node_modules\sqlite3 gyp 错误!节点-v v6.7.0 吉普错误!节点-gyp -v v3.3.1 gyp 错误!不好节点预gyp ERR!建造 错误节点预gyp ERR!堆栈错误:无法执行'node-gyp.cmd 配置 --fallb ack-to-build --module=C:\WS\linked10\linkedout\node_modules\sqlite3\lib\binding\ node-v48-win32-x64\node_sqlite3.node --module_name=node_sqlite3 --module_path=C:\WS\linked10\linkedout\node_modules\sqlite3\lib\binding\node-v48-win32-x64' (1) node-pre-gyp ERR! ChildProcess 的堆栈。 (C:\WS\linked10\linkedou t\node_modules\sqlite3\node_modules\node-pre-gyp\lib\util\compile.js:83:29) 节点预gyp错误!堆栈在 emitTwo (events.js:106:13) 节点预gyp 呃! ChildProcess.emit (events.js:191:7) node-pre-gyp 的堆栈 呃!堆栈在可能关闭(内部/child_process.js:877:16) 节点预gyp错误! Process.ChildProcess._handle.onexit 处的堆栈 (internal/chi ld_process.js:226:5) node-pre-gyp ERR!系统视窗_NT 6.1.7601 节点预gyp ERR!命令“C:\Program Files\nodejs\node.exe”“C:\WS\linked1 0\linkedout\node_modules\sqlite3\node_modules\node-pre-gyp\bin\node-pre-g 是的“”“安装”“--fallback-to-build”节点-pre-gyp ERR!cwd C:\WS\linked10\linkedout\node_modules\sqlite3 node-pre-gyp 错误!节点 -v v6.7.0 node-pre-gyp 错误! node-pre-gyp -v v0.6.30 node-pre-gyp 错误!不行

【问题讨论】:

您是否尝试在浏览器中下载mapbox-node-binary.s3.amazonaws.com /sqlite3/v3.1.6/node-v48-win32-x64.tar.gz。我的猜测是 .tar.gz 被阻止了。如果您可以在没有公司代理的情况下访问互联网,它应该可以工作。 【参考方案1】:

所以我预感到浏览器存在某种异常问题。我的公司只针对 IE 浏览器制定了强制政策。作为开发人员,您可以进入允许您使用 chrome 和 firefox 的浏览器例外列表。我被添加到列表中,现在 SQLite3 的安装工作完美。我认为有某种浏览器欺骗或发生某些事情来下载它需要的文件,但我不完全确定。这些是我使用 NPM 在我们的公司网络中成功运行的其他 NPM 设置。

npm set proxy=http://my.proxy
npm set https-proxy=http://my.corp.proxy
npm set user-agent="Mozilla/5.0 (Windows; U; MSIE 9.0; Windows NT 9.0; en-US)"
npm config set strict-ssl false
npm config set registry http://my.corp.npmrepo/path/

【讨论】:

【参考方案2】:

由于没有预构建的二进制文件,节点尝试从源代码构建它。 你的错误:

错误:找不到 Python 可执行文件“python”,您可以设置 PYT HON 环境变量。

阅读此模块的安装说明:https://github.com/nodejs/node-gyp

【讨论】:

所以我认为我的问题与我的机器上的 Python 没有任何关系,但我继续安装它。我解决了这个错误,但没有解决我的问题。我的公司网络防火墙后面可能存在内部问题。我已经让 NPM 正常工作,但对于这个 SQLite 安装,我认为它正在尝试做一些额外的事情。我可能需要被添加到浏览器例外列表中才能进行此后备安装过程。 我可以看到您的操作系统是 Windows。根据node-gyp:Visual C++ Build Tools,Visual Studio 2015,对于Windows上的本机插件编译,您应该已经安装。并且正确配置。如果您安装了所有这些产品已经发布了新的错误日志,在 python 安装之后,我会尽力帮助您。

以上是关于无法 NPM 在节点 6.x 中安装 SQLite3的主要内容,如果未能解决你的问题,请参考以下文章

无法在 Angular 项目中安装 npm 包

无法在 docker 容器中安装 npm?

NPM 包无法在 React -native 项目中安装它

npm install:无法在 Windows 10 中安装依赖项

npm 无法在 Windows 10 中安装 pm2 或 nodemon

无法通过 npm install axios 在 React Native 中安装 Axios