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

知道怎么解决吗?


当前回答

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安装它工作。也许这对某些人有帮助。

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

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

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

我刚刚得到这个错误运行kadence安装的“kadence”脚本首先检查nodejs,如果没有nodejs只运行node。我把最新版本的node链接到我的~/bin目录中,但nodejs运行的是一个我忘记卸载的旧版本,但直到现在才出现问题。

所以有这个问题的人可能会检查node和nodejs是否实际运行相同版本的node…

我在使用robotjs时也遇到了类似的问题。有一些废弃的代码需要节点v11,但我已经在v12上编译了电子代码。所以我得到了同样的错误。 这里没有任何工作,因为我基本上是试图将电子和其他依赖项从v12重建到节点v11。

以下是我所做的(部分是基于chitzui的回答,功劳在该有的地方):

备份package.json 完全删除node_modules文件夹 完全删除package_lock.json 删除包。Json(稍后将重新编译) 关闭项目目录下所有打开的编辑器和其他cmd窗口。 运行NPM init重新安装包,然后丢失旧备份的package.json中的数据 运行NPM I 固定

在我的例子中,我运行的是nodejs而不是node。由于nodejs是由包管理器安装的:

# which node
/home/user/.nvm/versions/node/v11.6.0/bin/node

# which nodejs
/usr/bin/nodejs