我正在终端上运行一个节点应用程序。最近已经升级到节点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)

知道怎么解决吗?


当前回答

在我的情况下,我在我的办公室代理跳过了一些包裹。当我走出我的办公室代理,并试图做npm安装它工作。也许这对某些人有帮助。

但我花了好几个小时才确定是什么原因。

其他回答

我在grpc模块中遇到了同样的问题,在我的情况下,我正在使用电子,并在env变量“export npm_config_target=1.2.3”中设置了错误的电子版本,将其设置为我正在使用的电子版本,解决了我的问题。希望这能帮助那些设置env变量的人(https://electronjs.org/docs/tutorial/using-native-node-modules#the-npm-way)

检查您正在使用的Node版本,可能与预期的不匹配。

你必须重新构建包,并告诉npm更新它也是二进制的。试一试:

npm rebuild bcrypt --update-binary

@robertklep用这个命令回答了一个相关的问题,看。

只有重建还没有解决我的问题,这在我的应用程序工作得很好。

我也有同样的问题,这里提到的任何方法都对我不起作用。 以下是对我有效的方法:

在main.js文件中要求所有你需要的依赖项,该文件由electron运行。(这对我来说似乎是第一个重要的部分) 执行npm i -D electronic -rebuild命令添加electronic -rebuild包 删除node-modules文件夹,以及packages-lock。json文件。 运行npm i安装所有模块。 运行。/node_modules/.bin/ electronic -rebuild (.\node_modules\.bin\ electronic -rebuild)。cmd for Windows)重新构建所有内容

在npm i之后直接运行。/node_modules/.bin/ electronic -rebuild是非常重要的,否则它在我的mac上无法工作。

可能是节点JS版本不一致导致了这个问题。如文档中所述。一定要使用其中一个版本。例如,在Dockerfile中指定:

# Pull lts from docker registry
FROM node:8.12.0

# ...