NodeJS模块"用户ID"错误:模块版本不匹配。预计46,得到47

时间:2016-01-15 10:48:43

标签: node.js module userid

尝试启动我需要模块" userid"的server.js时出现以下错误。

  module.js:460
  return process.dlopen(module, path._makeLong(filename));
                 ^

Error: Module version mismatch. Expected 46, got 47.
    at Error (native)
    at Object.Module._extensions..node (module.js:460:18)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:313:12)
    at Module.require (module.js:366:17)
    at require (module.js:385:17)
    at Object.<anonymous> (/root/backend/node_modules/userid/lib/userid.js:2:15)
    at Module._compile (module.js:435:26)
    at Object.Module._extensions..js (module.js:442:10)
    at Module.load (module.js:356:32)

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:3)

不确定此错误的确切含义,但我对此的修复是删除node_modules目录并使用npm install重新安装所需的模块。

以上是此错误的解决方案,显示在使用本地安装的模块的节点项目中。如果有一些全局模块抛出此错误,那么您可能必须重新安装它们。

答案 1 :(得分:1)

我会尝试升级导致package.json问题的模块版本。

答案 2 :(得分:0)

此问题的另一个原因是您在系统中安装了多个不同的node版本,并使用nvm进行管理。如果您运行node index.js,并且如果您运行sudo node index.js,则可能会导致运行不同的node版本。

因此,如果您使用npm install安装了应用程序模块,然后使用sudo node index.js运行应用程序,则会出现模块版本不匹配错误。在这种情况下,请确保nvm sudo node ...运行与应用程序预期相同的节点版本。

此外,在修复初始问题时,您可能会遇到此处Can't use NVM from root (or sudo)所述的nvm问题。 Yoo Matsuo's comment中描述了此问题的可能解决方案之一。