【问题标题】:Module version mismatch. Expected 11, got 1模块版本不匹配。预期 11,得到 1
【发布时间】:2013-03-23 07:45:33
【问题描述】:
Platform: Linux

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

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

【问题讨论】:

  • 不是 Linux 独有的。同样的事情也发生在 OSX 上。 rm -rf node_modules; npm update 将修复。
  • 确保 node -v 是预期的,然后是 rm -rf node_modules; npm install

标签: node.js


【解决方案1】:

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

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 解决了我的问题。

祝你好运!

【讨论】:

  • 澄清:npm uninstall xml2json 然后再次运行npm install 应该这样做。
  • 我在这个问题上苦苦挣扎了很长时间,发现只做 rm -fr node_modules &amp;&amp; npm install 就解决了它
【解决方案2】:

npm 重建也可以解决问题

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

【讨论】:

    【解决方案3】:
    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】:

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

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

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

      【讨论】:

        【解决方案5】:

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

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

        通过以下 2 个命令很容易解决这个问题:

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

        【讨论】:

          【解决方案6】:

          如果您使用的是 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)
          

          (这对我有用。)

          【讨论】:

            【解决方案7】:

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

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

            【讨论】:

              【解决方案8】:

              有时也会因为nodejs版本而出现问题。

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

              并更新您的 npm 使用:

              sudo npm install npm -g
              

              希望这会有所帮助!

              【讨论】:

                【解决方案9】:

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

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

                【讨论】:

                • 还没有人提到 C++ 附加组件。它们确实需要在 node.js 之外编译。使用您使用的任何编译器。
                【解决方案10】:

                我在使用 systemd 时遇到了这个问题,但我可以使用 node myapp.js 运行该应用程序。

                原来ExecStart 中的路径与我从which node 中得到的路径不同。在服务文件中更改它为我修复了它。

                source

                【讨论】:

                  【解决方案11】:

                  没有一个答案对我有用,所以这是我的解决方案。 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 是指 Node.js 的 ABI(应用程序二进制接口)版本号,用于确定哪些版本的 Node.js 编译的 C++ 附加二进制文件可以加载到无需重新编译。在早期版本中它曾经存储为十六进制值,但现在表示为整数。

                  【讨论】:

                    【解决方案12】:

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

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

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

                    【讨论】:

                      【解决方案13】:

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

                      node-gyp rebuild
                      

                      【讨论】:

                        【解决方案14】:

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

                        【讨论】:

                          猜你喜欢
                          • 1970-01-01
                          • 1970-01-01
                          • 1970-01-01
                          • 1970-01-01
                          • 1970-01-01
                          • 2020-06-06
                          • 2016-12-09
                          • 2019-03-02
                          • 2018-06-26
                          相关资源
                          最近更新 更多