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

知道怎么解决吗?


当前回答

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

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

其他回答

你只需要运行下面的命令:

$ rm -rf node_modules
$ rm -rf yarn.lock
$ yarn install

最后

$ ./node_modules/.bin/electron-rebuild

不要忘记yarn添加电子重建,如果它不存在于你的依赖。

你可以看到这个链接

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

结果我的问题是用户错误:确保你正在运行的节点版本与你在运行npm install或yarn时使用的是相同的。

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

确保你只安装了一个版本的NodeJS。试试这两个:

node --version
sudo node --version

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

对于电子模块,安装电子重建。

Format:
electron-rebuild -o <module_name> -v <electron version>

Example:
electron-rebuild -o myaddon -v 9.0.0-beta.6

指定当前目录中已安装的相同版本

你可能有这样的经验,一个标准的node-gyp构建将报告为64,然后一个基本的电子重建将报告76,直到你添加-v与确切的版本,它会颠簸到实际的版本80 (9.0.0-beta.6)