45
Platform: Linux

运行我的 node.js 程序时出现以下错误

Error: Module version mismatch. Expected 11, got 1.
4

14 回答 14

54

你可能会给出这样的错误:

Error: Module version mismatch. Expected 11, got 1.
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.require (module.js:364:17)
    at require (module.js:380:17)
    at Object.<anonymous> (/home/user/node_modules/xml2json/node_modules/node-expat/lib/node-expat.js:4:13)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.require (module.js:364:17)

然后,您可以注意到模块或某处的错误。

这是因为您已经更新了节点,您可能会重建上面找到的模块。

我通过重新安装(删除,然后安装)xml2json 来解决我的问题。

祝你好运!

于 2013-03-25T07:35:26.720 回答
34

npm rebuild 也可以解决问题

https://www.npmjs.org/doc/cli/npm-rebuild.html

于 2014-10-14T22:26:21.957 回答
19
Platform: Linux

为了将来在 node.js 中参考v0.10.x(至少 v0.10.0),我收到了这个错误:

Error: Module version mismatch. Expected 11, got 1.

为了解决这个问题,我发现了这个有趣的链接,并且还得到了Ben Noordhuis的一些帮助。以下命令帮助我摆脱了这个错误:

npm update
于 2013-03-23T07:45:33.470 回答
11

这通常发生在您使用一个版本的 Node 安装包,然后更改为不同的版本时。当您更新 Node 或使用 nvm 切换到不同版本时,可能会发生这种情况。

如果您尝试使用全局安装的节点以 root 身份运行进程,但您在自己的用户帐户中运行 nvm 管理的节点,也会发生这种情况。

要解决此问题,您只需使用正确版本的 Node.js 重新安装软件包即可。还要确保您在不同用户中使用相同版本的 Node。

于 2013-04-29T21:51:58.470 回答
4

发生此问题是因为以下情况:您使用的是 Node,例如版本 5。您在项目中添加了一些库,构建并运行它。您的所有库都将在节点版本 5 下编译。

然后你将你的节点升级到版本 6。然后你运行一些使用节点的命令,例如npm run test. 问题就在这里:您使用较新的节点版本来运行由较旧节点编译的库。

通过以下 2 个命令可以轻松解决此问题:

rm -rf node_modules // force remove node_modules directory
npm install         // install again all libraries. 
于 2016-10-17T19:41:30.640 回答
3

如果您使用的是 nvm,还要尝试一件事 - 确保您在全局以及在应用程序中运行相同版本的节点。

:/$ node -v
v6.0.0

:/var/www/app$ node -v
v6.2.0

如果他们不同意:

:/$ nvm use 6.2.0
Now using node v6.2.0 (npm v3.8.9)

(这对我有用。)

于 2016-06-11T01:15:59.937 回答
2

您可以在此页面https://nodejs.org/en/download/releases/上找到节点模块版本及其相应节点版本的列表

NODE_MODULE_VERSION 是指 Node.js 的 ABI(应用程序二进制接口)版本号,用于确定哪些版本的 Node.js 编译的 C++ 附加二进制文件可以加载到无需重新编译。它曾经在早期版本中存储为十六进制值,但现在表示为整数。

于 2016-02-10T10:42:04.263 回答
1

有时问题也是由于 nodejs 版本而出现的。

尝试更新 npm 和 nodejs 版本。按照此链接更新您的 nodejs。

并更新您的 npm 使用:

sudo npm install npm -g

希望这可以帮助!

于 2017-10-13T08:04:38.247 回答
0

在我的情况下,错误的原因是针对不同 node.js 版本编译的 C++-AddOn。

因此,您可能必须重新编译您的 C++-AddOn,以便插件的主要版本与您运行的 node.js 匹配。

于 2016-08-02T13:47:04.810 回答
0

我在 systemd 上遇到了这个问题,但我可以使用node myapp.js.

事实证明,路径ExecStart与我得到的路径不同which node。在服务文件中更改它为我修复了它。

来源

于 2017-07-30T09:30:29.707 回答
0

没有一个答案对我有用,所以这是我的解决方案。 Error: Module version mismatch. Expected 48, got 51. at Error (native) at Object.Module._extensions..node (module.js:597:18) 48 和 51 对应于 nodejs 发布页面上的节点版本: https ://nodejs.org/en/download/releases/

rm -rf node_modules/ 所以我安装了nvm,一个节点版本管理器,并将我的节点版本切换到48(6.11.x) , 然后运行 npm install

我的特定模块 mcrypt 依赖于 c++ 二进制文件,节点模块版本有直接影响:

NODE_MODULE_VERSION 是指 Node.js 的 ABI(应用程序二进制接口)版本号,用于确定哪些版本的 Node.js 编译的 C++ 附加二进制文件可以加载到无需重新编译。它曾经在早期版本中存储为十六进制值,但现在表示为整数。

于 2017-10-17T20:26:39.957 回答
0

更改节点版本后,到达所需位置的最简单方法是:

rm -Rf node_modules/ && yarn && yarn start

替换yarn start为启动服务器所需的任何命令。

于 2018-01-05T20:19:57.143 回答
0

如果模块是 c++ 附加组件,您可能需要重新构建 node-gyp

node-gyp rebuild
于 2018-05-19T15:16:10.320 回答
0

以上答案都没有为我解决问题。我的解决方案是使用xml2js而不是xml2json

于 2018-12-11T12:49:10.400 回答