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

Joe*_*dee 101 version node.js npm node-modules

我在终端上运行节点应用程序.最近已升级到节点v8.5.0,但我收到此错误:

Error: The module '/tidee/tidee-au/packages/tidee-au-server/node_modules/bcrypt/lib/binding/bcrypt_lib.node'
was compiled against a different Node.js version using
NODE_MODULE_VERSION 51. 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`).
    at Object.Module._extensions..node (module.js:653:18)
    at Module.load (module.js:545:32)
    at tryModuleLoad (module.js:508:12)
    at Function.Module._load (module.js:500:3)
    at Module.require (module.js:568:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (/tidee/tidee-au/packages/tidee-au-server/node_modules/bcrypt/bcrypt.js:6:16)
    at Module._compile (module.js:624:30)
    at Module._extensions..js (module.js:635:10)
    at Object.require.extensions.(anonymous function) [as .js] (/tidee/tidee-au/packages/tidee-au-server/node_modules/babel-register/lib/node.js:152:7)
    at Module.load (module.js:545:32)
    at tryModuleLoad (module.js:508:12)
    at Function.Module._load (module.js:500:3)
    at Module.require (module.js:568:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (/tidee/tidee-au/packages/tidee-au-server/server/helpers/encryptPass.js:1:16)
Run Code Online (Sandbox Code Playgroud)

不知道怎么解决这个问题?

ale*_*mac 89

您需要bcryptnode_modules文件夹中删除模块文件夹()并重新安装它,使用以下命令:

$ rm -rf node_modules/bcrypt
$ npm install
// or
$ yarn
Run Code Online (Sandbox Code Playgroud)

  • 不行.对我来说,问题在于`zmq`包,重建或删除它和`npm安装'一遍又一遍也无济于事.总是同样的问题. (6认同)
  • @trusktr尝试完全删除node_modules文件夹:`rm -rf node_modules`.清除npm缓存:`npm cache clear`,删除package-lock.json或npm-shrinkwrap.json.只有在那之后运行`npm i`. (3认同)
  • 收到一条好消息,“我当然希望你知道自己在做什么。” 当我清除缓存时。我没有那么多,但显然你做到了!有效。 (3认同)

RPi*_*oli 46

你必须重建包告诉npm也要更新它的二进制文件.尝试:

npm rebuild bcrypt --update-binary
Run Code Online (Sandbox Code Playgroud)

@robertklep用这个命令回答了一个相对的问题,.

只有重建没有解决我的问题,这在我的应用程序中工作正常.

希望能帮助到你!


chi*_*zui 43

我有同样的问题,这里没有提到我的工作.这对我有用:

  1. 需要在main.js电子运行的文件中所需的所有依赖项.(这似乎是我的第一个重要部分)
  2. 运行npm i -D electron-rebuild以添加电子重建
  3. 删除node-modules文件夹以及packages-lock.json文件.
  4. 运行npm i以安装所有模块.
  5. 运行./node_modules/.bin/electron-rebuild以重建所有内容

直接运行是非常重要的,否则它在我的mac上不起作用../node_modules/.bin/electron-rebuildnpm i

我希望我可以帮助一些沮丧的灵魂.

  • 只需运行电子重建就为我完成了这项工作。在我的情况下不需要删除和重新安装模块。 (8认同)
  • 那么你很幸运@stoefln 不幸的是,在某些设置中一一遵循这些确切的步骤至关重要。 (2认同)

Fro*_*y Z 23

简单地运行:

npm uninstall bcrypt

其次是:

npm install bcrypt(或者npm install,如果bcryptpackage.json文件中声明为依赖项)


sme*_*vin 10

由于package-lock.json,您很可能遇到此问题.不知何故,它似​​乎阻止您重新编译或重建依赖项,即使您明确运行npm rebuild.我运行以下所有内容为我修复它:

rm package-lock.json;
rm -rf node_modules;
npm install;
Run Code Online (Sandbox Code Playgroud)


小智 9

npm rebuild bcrypt --update-binary
Run Code Online (Sandbox Code Playgroud)

我有相同的问题,但包不同,我运行此代码并进行处理


Bar*_*les 8

确保您仅安装了一个版本的NodeJS。尝试以下两个:

node --version
sudo node --version
Run Code Online (Sandbox Code Playgroud)

我最初是从源代码安装NodeJS的,但它是不正确的版本,并使用进行了“升级”到最新版本nvm,该操作不会删除任何以前的版本,而只会在/root/.nvm/versions/...目录中安装所需的版本。因此sudo node仍然指向先前版本,而node指向较新版本。


lim*_*gao 7

你可以看到这个链接

检查您的节点版本权限。使用NODE_MODULE_VERSION 51表示您的节点版本是nodejs v7.x,需要NODE_MODULE_VERSION 57意味着您需要将节点升级到v8.x,因此您需要升级节点。然后您需要运行npm rebuild命令来重建项目

  • 没有链接,答案本身应该会有所帮助。 (3认同)