我正在终端上运行一个节点应用程序。最近已经升级到节点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更新它也是二进制的。试一试:

npm rebuild bcrypt --update-binary

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

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

其他回答

I have hit this error twice in an electron app and it turned out the problem was that some modules need to be used from the main process rather than the render process. The error occurred using pdf2json and also node-canvas. Moving the code that required those modules from index.htm (the render process) to main.js (the main process) fixed the error and the app rebuilt and ran perfectly. This will not fix the problem in all cases but it is the first thing to check if you are writing an electron app and run into this error.

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

$ rm -rf node_modules/bcrypt
$ npm install
// or
$ yarn

在尝试了不同的东西之后。 这工作。

删除节点模块文件夹并运行

npm i

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

你可以看到这个链接

检查节点版本是否正确。使用 NODE_MODULE_VERSION 51表示节点版本为nodejs v7。NODE_MODULE_VERSION 57意味着您需要将节点升级到v8。X,你需要升级你的节点。然后你需要运行NPM rebuild命令来重建你的项目