尝试启动我需要模块" 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)
我该如何解决这个问题?
答案 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中描述了此问题的可能解决方案之一。