开发者问题收集

在升级到 node 16 和 MacOS 后无法构建本机模块

2022-04-24
1391

我已升级到 MacOS Monterey (12.3.1) 和 Node 16。从那时起,由于 @newrelic/native-metrics ,我无法在某些节点模块上运行安装,并出现以下错误:

Error running install script for optional dependency: "/Users/zivl/github/data-science-client/serverless/ml-platform-services/node_modules/@newrelic/native-metrics: Command failed.
Exit code: 1
Command: node ./lib/pre-build.js install native_metrics

在查看日志时,我发现它正在使用 node-gyppython ,所以我想也许由于升级,我需要重新安装它们 - 所以我这样做了。但重新安装 node-gyp / python (包括切换多个 python 版本(3.7、3.9、3.10) - 仍然没有帮助。

我检查了 node-gyp 日志并看到以下内容:

node-pre-gyp http 404 https://github.com/hyj1991/v8-profiler-node8/releases/download/v6.3.0/profiler-v6.3.0-node-v93-darwin-x64.tar.gz

node-pre-gyp WARN Tried to download(404): https://github.com/hyj1991/v8-profiler-node8/releases/download/v6.3.0/profiler-v6.3.0-node-v93-darwin-x64.tar.gz

node-pre-gyp WARN Pre-built binaries not found for [email protected] and [email protected] (node-v93 ABI, unknown) (falling back to source compile with node-gyp)
...
Failed to execute native-metrics install: No pre-built artifacts to download for your OS/architecture.

v8-profiler-node8 没有适用于 node 16 的版本。 我尝试在线寻找它,到目前为止没有找到任何解决方案 :(

2个回答

最好彻底消除此类问题。

如果可能,请将您的应用程序容器化,例如使用 Docker。 除非您专门为 Mac OS 编写应用程序。

https://nodejs.org/en/docs/guides/nodejs-docker-webapp/

这将确保这种情况不会再发生,可能比一次性解决方案更好 :)

mpod
2022-04-24

最终,帮助我解决问题的是执行以下操作之一:

  • 手动安装 node-gyp 的全局包,并且您应该将节点设置为仅运行该版本(在线阅读更多相关信息,我会尝试查找链接,但它在网络上的任何地方)。

  • 切换到 yarn 3pnpm ,使用这些包管理器时,第三方脚本不会默认安装,如 npm

  • 您始终可以使用 npm install --ignore-scripts ,但到处都有这个标志很糟糕……

  • pypenv 全局中有两个版本的 python, python2python3

我希望这对您有所帮助,其他答案和非常欢迎解决方案:)

Ziv Levy
2022-12-15