如何安装 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 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