繁体   English   中英

Node - 使用 NODE_MODULE_VERSION 51 针对不同的 Node.js 版本编译

[英]Node - was compiled against a different Node.js version using NODE_MODULE_VERSION 51

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

知道如何解决这个问题吗?

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

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

我遇到了同样的问题,这里提到的任何内容都不适合我。 这是对我有用的:

  1. 在由电子运行的main.js文件中需要您需要的所有依赖项。 (这对我来说似乎是第一个重要的部分)
  2. 运行npm i -D electron-rebuild添加电子重建
  3. 删除node-modules文件夹以及packages-lock.json文件。
  4. 运行npm i安装所有模块。
  5. 运行./node_modules/.bin/electron-rebuild ( .\\node_modules\\.bin\\electron-rebuild.cmd for Windows ) 重建一切

npm i之后直接运行./node_modules/.bin/electron-rebuild非常重要,否则它在我的 mac 上不起作用。

我希望我能帮助一些沮丧的灵魂。

你必须重建包告诉 npm 更新它的二进制文件 尝试:

npm rebuild bcrypt --update-binary

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

只有重建并没有解决我的问题,这在我的应用程序中运行良好。

希望有帮助!

只需运行:

npm uninstall bcrypt

紧随其后的是:

npm install bcrypt (或npm install ,如果bcrypt在您的package.json文件中被声明为依赖项)

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

node --version
sudo node --version

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

你可以看到这个链接

检查您的节点版本是否正确。 使用 NODE_MODULE_VERSION 51 意味着你的节点版本是 nodejs v7.x,需要 NODE_MODULE_VERSION 57 意味着你需要升级你的节点到 v8.x,所以你需要升级你的节点。 然后你需要运行npm rebuild命令来重建你的项目

由于 package-lock.json,您很可能会遇到此问题。 不知何故,它似​​乎阻止您重新编译或重建您的依赖项,即使您明确运行npm rebuild 我运行了以下所有内容来为我修复它:

rm package-lock.json;
rm -rf node_modules;
npm install;
npm rebuild bcrypt --update-binary

我有相同的问题,但包不同,我运行此代码并进行处理

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

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

原来我的问题是用户错误:确保您用于运行的节点版本与您在运行 npm install 或 yarn 时使用的版本相同。

我使用 NVM 进行节点版本控制,并通过终端运行 yarn,但我的 IDE 在运行时设置为使用旧版本的节点,并且抛出上述错误。 将运行配置中我的 IDE 节点版本与节点 --version 匹配解决了该问题。

我删除了 node_modules 文件夹并运行npm install并且我的应用程序启动时没有任何错误。

这对我有用。 我在 Electron Js 中使用环回节点模块并遇到了这个问题。 在尝试了许多以下对我有用的事情之后。

脚本中的package.json文件中添加以下几行:

  ... 
"scripts": {
        "start": "electron .",
        "rebuild": "electron-rebuild"
    
      },
...

然后运行以下命令npm run rebuild

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

这是我所做的(其中一部分基于 chitsui 的回答,信用到期的信用):

  • 备份 package.json
  • 完全删除 node_modules 文件夹
  • 完全删除 package_lock.json
  • 删除 package.json (稍后将重新初始化)
  • 关闭项目目录中所有打开的编辑器和其他 cmd 窗口。
  • 运行npm init以重新npm init包,然后使用旧备份的 package.json 丢失数据
  • 运行npm i
  • 固定:)

希望这会有所帮助。

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

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

最后

$ ./node_modules/.bin/electron-rebuild

如果您的依赖项中不存在,请不要忘记yarn add electron-rebuild

对于 Electron 模块,安装 electron-rebuild。

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)

使用 systemd 运行我的应用程序时出现此错误:

ExecStart=/usr/local/bin/node /srv/myapp/server.js

但是我在 shell 中为npm install使用了不同的版本:

$ which node
/home/keith/.nvm/versions/node/v8.9.0/bin/node

如果这是你的设置,你可以硬编码在服务文件的节点版本或遵循类似的解决方法这一个

在尝试了不同的东西之后。 这奏效了。

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

npm i

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

您可以完全删除 bcrypt 并安装 bcryptjs。 它慢了大约 30%,但没有依赖项,所以安装它很容易。

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

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

节点 JS 版本的不一致可能是导致问题的原因。 如文档中所述 请务必使用 lts 版本之一。 例如在你的 Dockerfile 中指定:

# Pull lts from docker registry
FROM node:8.12.0

# ...

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

我遇到了同样的问题,但这些解决方案都没有奏效,我不知道为什么,它们过去曾为我解决过类似的问题。

无论如何,为了解决这个问题,我刚刚使用 node-pre-gyp 手动重建了包

cd node_modules/bcrypt
node-pre-gyp rebuild

一切都按预期进行。

希望这有帮助

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

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

就我而言,我在我的办公室代理中跳过了一些包裹。 当我从办公室代理出来并尝试执行npm install它起作用了。 也许这对某人有帮助。

但我花了几个小时才确定这是原因。

就我而言,我运行的是nodejs而不是node 由于包管理器安装了nodejs

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

# which nodejs
/usr/bin/nodejs

他们都没有为我工作,但这是:

npm install 
npm start

运行npm config set python python2.7并再次运行npm install派对开始了。

我在电子应用程序中两次遇到此错误,结果证明问题是需要从主进程而不是渲染进程使用某些模块。 使用 pdf2json 和节点画布时发生错误。 将需要这些模块的代码从 index.htm(渲染进程)移动到 main.js(主进程)修复了错误,应用程序重新构建并完美运行。 这不会在所有情况下都解决问题,但首先要检查您是否正在编写电子应用程序并遇到此错误。

我来这里是因为我在 vscode 中遇到了 quokka.js ext 的这个错误。

我的解决方案:(在 Mac 上通过终端)

1- 我去了~/.quokka

2-我运行nano config.json

3- 我将 config.json 中的代码复制到一个单独的文件中

4-我删除了 config.json 中的代码

5- 我停止并重新启动 Quokka。

6- 确认 Quokka 正常工作后,我删除了 config.json 文件代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM