2013-03-23 41 views
44
Platform: Linux 

当运行我的node.js程序中,我得到了以下错误模块版本不匹配。预计11,拿到了1

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

不是Linux独有的。同样的事情发生在OSX上。 'rm -rf node_modules; npm update'将会修复。 – Meekohi 2013-08-05 14:36:05

+0

确保'''node -v'''是预期的,然后是'''rm -rf node_modules; npm install''' – obotezat 2017-09-29 09:03:56

回答

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) 

,然后,你可以看到在模块或其他地方的错误。

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

我revole我的问题由重新安装(删除,然后安装)xml2json。

祝你好运!

+4

澄清:'npm uninstall xml2json'然后再次运行'npm install'应该这样做。 – elimisteve 2013-11-10 21:33:16

+4

我一直在努力争取这个最长的时间,发现只是做'rm -fr node_modules && npm install'修复了它 – Maruf 2015-06-04 13:49:55

+0

'npm rebuild'并完成了 – 2018-01-05 20:22:54

18
Platform: Linux 

对于Node.js的v0.10.x(至少v0.10.0)备查我得到这个错误:

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

为了解决这个问题,我发现这个interesting link和也有一定的帮助,从Ben Noordhuis。下面的命令帮我摆脱这种错误的:

npm update 
+4

更新前, rm -rf node_modules – 2014-01-16 16:14:13

+0

'npm update'为我做了窍门。 – wachr 2016-02-12 19:07:42

11

当您使用一个版本的节点安装软件包,然后更改为其他版本时,通常会发生这种情况。当您更新Node时,或者使用nvm切换到其他版本时,可能会发生这种情况。

如果您尝试以全局安装的节点为根运行进程,但是您正在自己的用户帐户中运行一个由nvm管理的节点,也会发生这种情况。

要解决此问题,您可以使用正确版本的节点重新安装软件包。还要确保您在不同的用户中使用相同版本的节点。

2

你可以找到节点模块版本的列表,而这个页面https://nodejs.org/en/download/releases/

NODE_MODULE_VERSION refers to the ABI (application binary interface) version number of Node.js, used to determine which versions of Node.js compiled C++ add-on binaries can be loaded in to without needing to be re-compiled. It used to be stored as hex value in earlier versions, but is now represented as an integer.

2

还有一件事对他们的相应节点释放尝试如果您使用的是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) 

+0

这个小小的回答在这里帮了我,谢谢。 – 2018-03-05 18:47:36

0

在我的情况该错误的原因是一个C++ - 附加元件这是针对不同的node.js版本编译。

所以你可能不得不重新编译你的C++ - AddOn,所以你运行的插件和node.js的主要版本匹配。

+1

此答案提供了哪些额外信息? – Pogrindis 2016-08-02 13:50:11

+1

还没有人提到C++附加组件。而且它们确实需要在node.js之外进行编译。使用任何你使用的编译器。 – 2016-08-02 13:52:33

4

发生此问题的原因如下:您正在使用Node作为示例版本5.您在项目中添加一些库,生成并运行该库。所有库都将在节点版本5下进行编译。

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

解决,这是由2个以下命令很简单:

rm -rf node_modules // force remove node_modules directory 
npm install   // install again all libraries. 
0

我有这个问题,systemd,但我可以用node myapp.js运行应用程序。

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

source

1

有时问题出现由于版本的NodeJS过。

尝试更新npm和nodejs版本。 按照这个link来更新你的nodejs。

,并更新你的NPM使用:

sudo npm install npm -g 

希望这有助于!

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/

因此,我安装NVM,节点版本管理器,并打开我的节点版本48(6.11.x),然后跑了 rm -rf node_modules/npm install

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

NODE_MODULE_VERSION refers to the ABI (application binary interface) version number of Node.js, used to determine which versions of Node.js compiled C++ add-on binaries can be loaded in to without needing to be re-compiled. It used to be stored as hex value in earlier versions, but is now represented as an integer.

0

去的地步,你需要,你已经改变了你的节点版本后,最简单的方法是:

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

更换yarn start与任何命令是,你需要来启动服务器。