如何使用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。
我也尝试过重新编译:
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也不在新计算机上工作,所以我一直在从头开始尝试。有时,我想知道是否是因为我正在使用Ubuntu 18.04。运行docker映像时,服务器似乎无法超过16.04。
答案 0 :(得分:0)
我知道了!
事实证明,我从node和nodejs获得了不同的版本
$ node --version
v4.9.1
$ nodejs --version
v8.10.0
我升级到节点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稳定版为v1.0.3,因此有可能使用较新版本的grunt也可以解决此问题。
答案 1 :(得分:0)
该解决方案对我不起作用,因为我只有一个节点版本(10)。
我的项目中发生的事情是,package.json
是使用旧版本软件包从远程存储库中提取的。
在本地安装节点模块(使用 yarn )时,它将下载最新的依赖项,从而产生不兼容性。
尝试了几种解决方案后,最终对我有用的是选择使我头痛的特定软件包(login-funcs-nodejs
)并运行:yarn upgrade login-funcs-nodejs --latest