如何安装 NODE_MODULE_VERSION 46

Posted

技术标签:

【中文标题】如何安装 NODE_MODULE_VERSION 46【英文标题】:How can I install NODE_MODULE_VERSION 46 【发布时间】:2019-10-04 06:16:00 【问题描述】:

如何使用 NODE_MODULE_VERSION 46 安装 Node.js 版本?我一直遇到 NODE_MODULE_VERSION 不匹配的问题,并且重新编译没有帮助,因此切换节点版本可能更容易。

基本上,我经常遇到这种情况:

Warning: The module '/home/cwaugh/workspaces/myproject/build/Release/addon.node'
was compiled against a different Node.js version using
NODE_MODULE_VERSION 46. This version of Node.js requires
NODE_MODULE_VERSION 57. Please try re-compiling or re-installing
the module (for instance, using `npm rebuild` or `npm install`). Use --force to continue.

到目前为止,我已尝试使用 n 更改为不同的版本(我的依赖项之一需要 4.9.1 或更低版本),但这似乎并没有改变警告所识别的 NODE_MODULE_VERSION。

我也试过重新编译:

我尝试删除 node_modules 并再次运行 npm install。 (这个错误看起来像是来自项目根目录,但它也从未对 node_modules 文件夹中的任何内容起作用) node-gyp configure --target=4.9.1 && node-gyp build --target=4.9.1。我从here 得到了这个想法,希望我的运气比 mxcd 好。 node-pre-gyp rebuild。我看到了this,并认为它可能对我有用。

这适用于另一台运行 vagrant 映像的旧计算机。不幸的是,vagrant 也没有在新电脑上工作,所以我一直在从头开始尝试。有时,我想知道是不是因为我使用的是 Ubuntu 18.04。服务器在运行我们的 docker 映像时似乎无法超过 16.04。

【问题讨论】:

我要改变它。当我升级我的 nan 版本时,我能够使用 npm 6.17.1,这将消息更改为 compiled against a different Node.js version using NODE_MODULES_ 48 【参考方案1】:

该解决方案对我不起作用,因为我只有一个节点版本 (10)。 我的项目中发生的情况是,package.json 是从远程存储库中提取的,带有旧版本的包。

在本地安装节点模块时(使用 yarn),它会下载最新的依赖项,造成不兼容。

在尝试了几种解决方案后,最终对我有用的是选择让我头疼的特定包 (login-funcs-nodejs) 并运行:yarn upgrade login-funcs-nodejs --latest

【讨论】:

【参考方案2】:

我明白了!

原来我从 node 和 nodejs 获得了不同的版本

$ node --version
v4.9.1
$ nodejs --version
v8.10.0

我升级到node v8.10.0,重做一切,错误消失了!

sudo npm install -g n
sudo n 8.10.0
rm -rf node_modules
npm install
node-gyp clean
node-gyp configure
node-gyp build
grunt build
grunt start
# No more NODE_MODULE_VERSION error

我尝试卸载 nodejs(因为它已被替换为“node”),但 node-grunt-cli 需要它。我猜 grunt 使用 nodejs 而不是 node 来检查它的版本,导致错误。 Ubuntu 存储库有 Grunt v0.4.5,而 Grunt stable 是 v1.0.3,因此更新版本的 grunt 也可以解决这个问题。

【讨论】:

以上是关于如何安装 NODE_MODULE_VERSION 46的主要内容,如果未能解决你的问题,请参考以下文章

如何找到 NODE_MODULE_VERSION?

使用 NODE_MODULE_VERSION 64 针对不同的 Node.js 版本编译。此版本的 Node.js 需要 NODE_MODULE_VERSION 67

Node - 使用 NODE_MODULE_VERSION 72 针对不同的 Node.js 版本进行编译

bindings.node' 是针对不同的 Node.js 版本使用 NODE_MODULE_VERSION 93 编译的。此版本的 Node.js 需要 NODE_MODULE_VERSION 89

node-gyp 针对错误的 NODE_MODULE_VERSION 进行编译

LevelDOWN:测试时NODE_MODULE_VERSION错误,但未运行