我正在终端上运行一个节点应用程序。最近已经升级到节点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 install或yarn时使用的是相同的。

我使用NVM对节点进行版本控制,并通过终端运行yarn,但我的IDE在运行时设置为使用旧版本的节点,并抛出上面的错误。在运行配置中匹配我的IDE的节点版本到node——version修复了这个问题。

其他回答

我得到了同样的错误,但我试图运行一个节点应用程序使用Docker容器。

我通过添加一个.dockerignore文件来忽略node_modules目录来修复它,以确保当构建docker映像时,它为我想要的映像(Alpine)构建本机包,而不是复制为我的主机(Debian)编译的node_modules。

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.

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

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

npm i

您可以完全删除bcrypt并安装bcryptjs。它慢了大约30%,但是没有依赖,所以安装它并不痛苦。

npm i -S bcryptjs && npm uninstall -S bcrypt

我们已经成功地为我们的应用程序安装了它。我们遇到了bcrypt无法在Node v8.x的AWS实例上编译的问题

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

在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上无法工作。