![npm 安装在 node-gyp 重建和 libpq 时失败](https://linux22.com/image/197322/npm%20%E5%AE%89%E8%A3%85%E5%9C%A8%20node-gyp%20%E9%87%8D%E5%BB%BA%E5%92%8C%20libpq%20%E6%97%B6%E5%A4%B1%E8%B4%A5.png)
> [email protected] install /home/johnsoct/bobtail/node_modules/libpq
> node-gyp rebuild
/home/johnsoct/.nvm/versions/node/v12.22.4/lib/node_modules/npm/node_modules/npm-lifecycle/node-gyp-bin/node-gyp: line 5: /usr/local/lib/node_modules/node-gyp/bin/node-gyp.js: No such file or directory
我已阅读该错误,不,/usr/local/lib/ 处没有安装任何内容...当我全局安装 node-gyp 时,它不会安装在那里。
我试过了:
- 重新安装 postgres (https://fedoraproject.org/wiki/PostgreSQL)
- 为 Fedora 安装 libpq
- 重启512394823094次
- 删除node_modules并重新安装(一遍又一遍地希望发生神奇的事情)
- 删除 package-lock.json 并重新安装
- 其他一些我早已忘记的东西
我知道的一个小提示:未安装的软件包npm install
是pg-native
.不确定这会产生什么影响,但认为它是相关的,因为libpq
安装报告中提到了这一点。
如果您好奇,这就是我的 PATH 的样子(我最初使用 linuxbrew 安装和卸载了 postgres):
/home/johnsoct/bin:/usr/pgsql-10/bin:/usr/pgsql-10/bin:/home/linuxbrew/.linuxbrew/opt/postgresql@10/bin:/home/johnsoct/bin:/home/linuxbrew/.linuxbrew/opt/postgresql@10/bin:/home/johnsoct/.nvm/versions/node/v12.22.4/bin:/home/johnsoct/.local/bin:/home/johnsoct/bin:/home/linuxbrew/.linuxbrew/bin:/home/linuxbrew/.linuxbrew/sbin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/var/lib/snapd/snap/bin
任何意见/建议都会非常有帮助......我在这里失去了理智。
答案1
这是非常牵强的,但由于我在使用 node-gyp 构建 libpq 时遇到了同样的问题,我想无论如何我都会分享我的修复,以防万一。
我的错误输出如下所示:
$ npm install
npm ERR! code 1
npm ERR! path /home/ekik/Source/home/grafana/node_modules/libpq
npm ERR! command failed
npm ERR! command sh -c -- node-gyp rebuild
npm ERR! node:internal/modules/cjs/loader:936
npm ERR! throw err;
npm ERR! ^
npm ERR!
npm ERR! Error: Cannot find module 'object-assign'
npm ERR! Require stack:
当我在 Manjaro Linux 上从 NodeJS 14 升级到 16 或 18 时,这种情况就开始发生了。显然,正在发布的 node-gyp 包使用了大量已弃用的东西(从 npm 安装日志收集),显然默认情况下(不再)安装这些东西。
我的解决办法很简单:
sudo npm install --global object-assign code-point-at number-is-nan request
请注意,这会污染您的全局node_modules。