如何安装 NODE_MODULE_VERSION 46

How can I install NODE_MODULE_VERSION 46

如何使用 NODE_MODULE_VERSION 46 安装 Node.js 版本?我让 运行ning 陷入 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正如警告所识别的那样。

我也试过重新编译:

这适用于另一台较旧的计算机 运行ning 一个 vagrant 图像。不幸的是,vagrant 也没有在新计算机上工作,所以我一直在从头开始尝试。有时候,我在想是不是因为我用的是Ubuntu18.04。当他们 运行 我们的 docker 图片时,服务器似乎无法超过 16.04。

我明白了!

原来我从 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 也可能会解决这个问题。

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

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

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