module.js:338在node.js中抛出错误

我正在使用Ubuntu的,我试图运行一个脚本使用nodejs,我得到这个错误。

/home/bebz/Documents/test# node server.js module.js:338 throw err; ^ Error: Cannot find module 'merge-descriptors' at Function.Module._resolveFilename (module.js:336:15) at Function.Module._load (module.js:278:25) at Module.require (module.js:365:17) at require (module.js:384:17) at Object.<anonymous> (/home/bebz/node_modules/express/lib/express.js:6:13) at Module._compile (module.js:460:26) at Object.Module._extensions..js (module.js:478:10) at Module.load (module.js:355:32) at Function.Module._load (module.js:310:12) at Module.require (module.js:365:17) 

问题是什么? 我在正确的目录,也试图用root运行它,但没有任何反应。

里面server.js是

 // get dependencies var app = require("express")(); // handle request and response app.get("/", function(req, res) { res.send({name:"Hello Wolrd"}); }); // initializing a port app.listen( 5000); 

一个简单的例子来显示node.js正在工作。

好像脚本有一个未满足的依赖关系 – 意味着你必须首先安装模块“merge-descriptors”。

它似乎也像脚本使用“expression”(和“合并描述符”实际上看起来像一个“expression”的依赖) – 因为这没有抛出一个错误一些依赖似乎已经安装。

所以你可以尝试通过npm install或者npm update来安装缺less的。

更新:根据npmjs.org “merge-descriptors”是“express”的依赖关系。 看看你的堆栈跟踪显示,你有“express”全局安装 – 所以你应该尝试npm update -g

如果这不能解决你的问题,你应该看看这个问题 。

npm更新

我在模块安装顺序不完善的时候看到这个,或者有多个模块存在。

npm更新sorting这个弃用不正确的版本。

每当你得到module.js:338 throw err; 试着检查npm是否安装在你的机器上。

 UserName$ npm -v 

如果你得到的版本名称,那么清除npm安装。
如果您没有获取版本名称,则说明安装有问题,或者未安装。

要安装npm ,请在terminal中input此命令,

UserName$ curl -0 -L http://npmjs.org/install.sh | sudo sh

另外请注意,根据您的用户权限,我在sudo sh命令之前添加了sudo sh

模块名称和文件名称不匹配时发生此错误。 使用相同的名称作为模块和文件名后解决。 例如

 module - Hello, File name - Hello.js 

你应该安装merge-descriptors模块。 打开您的terminal或命令提示符并运行以下命令:

 npm install --save merge-descriptors