使用另一个节点版本重新编译节点依赖项

Recompiling node dependencies using another node version

我想安装一些依赖项,在本例中是安装 node-pty。但是当我 运行 它时,他们给我这个错误:

Error: The module '/home/dev/Documents/project/node_web_kit/node_modules/node-pty/build/Release/pty.node' was compiled against a different Node.js version using NODE_MODULE_VERSION 46. This version of Node.js requires NODE_MODULE_VERSION 51. Please try re-compiling or re-installing

有什么解决办法吗?

最简单的确定方法就是删除 node_modules 并从头开始重新 运行 npm i,这样所有模块肯定会为新的 Node 版本设置.

重建 node-pty 模块使用:

npm rebuild node-pty --update-binary

如果上述 none 有效,请尝试手动重建包:

cd node_modules/<your module>
node-pre-gyp rebuild

这对我有用

如果删除 node_modules 文件夹并重新安装对您不起作用,npm rebuild 也对您不起作用,并且您使用的是 nvm,则您可能遇到了不同的问题。我的是我的 npm 配置前缀没有设置为我当前的 nvm 节点版本。所以你可以试试这个:

npm config delete prefix
npm config set prefix $NVM_DIR/versions/node/vX.X.X

当然,将vX.X.X替换为你正在使用的nvm安装节点版本。

万一有人在使用 WebStorm 时遇到这个问题:

WebStorm中的终端window使用node的系统设置,但是运行配置可能使用不同的版本,所以终端中的npm install可能会导致这个错误。只需更改 运行 配置中的节点版本,应该没问题。

就我而言,我是第一次从事 Meteor 项目,并没有意识到 meteor npm installnpm install 之间存在差异。前者确保使用与当前 Meteor 版本测试过的相同 npm 版本安装正确的软件包。我的理解是,这在其他框架如 Electron 中很常见。