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

时间:2015-02-07 01:38:00

标签: 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正在运行。

6 个答案:

答案 0 :(得分:27)

似乎脚本具有未满足的依赖性 - 这意味着您必须首先安装模块“merge-descriptors”。

似乎脚本使用“express”(并且“merge-descriptors”实际上看起来像是“express”的依赖项) - 因为这并没有抛出错误,似乎已经安装了一些依赖项。

因此,您可以尝试通过npm installnpm update安装缺少的内容。

更新:根据npmjs.org“merge-descriptors”是“express”的依赖项。查看堆栈跟踪显示您已全局安装“express” - 因此您应该尝试npm update -g

如果这不能解决您的问题,您应该查看this question

答案 1 :(得分:2)

npm update

当模块安装顺序不完美或存在多个模块时,我看到了这一点。

npm update对此进行排序,不推荐使用不正确的版本。

答案 2 :(得分:1)

每当您module.js:338 throw err;尝试检查机器中是否安装了npm时。

UserName$ npm -v

如果您获得版本名称,则很明显已安装npm

如果您没有获得版本名称,则表示您的安装存在一些问题,或者未安装。

要安装npm,请在终端中输入以下命令:

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

另请注意,我在sudo命令之前添加了sudo sh,具体取决于您的用户权限。

答案 3 :(得分:0)

当模块名称和文件名不匹配时,会发生此错误。在为模块和文件名使用相同的名称后,它已得到解决。例如

//In JS file
var arr = [];
arr.push( $("#textZipcode").val());
arr.push( $("#textPhone").val());
arr.push($("#textAddress").val());
arr.push( $("#textMobile").val());
//You can add any number. It will store to array properly.
$.ajax({
type: "POST",
url: "HomePage.aspx/SaveData",
contentType: "application/json; charset=utf-8",
dataType: "json",
data:JSON.stringify({arr:arr}),
success: function (response) {
}});

//In C#
[WebMethod]
public static void SaveData(string[] arr)
{
}

答案 4 :(得分:0)

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

npm install --save merge-descriptors

答案 5 :(得分:0)

我也遇到了同样的问题,你应该尝试npm install,npm update也是一个选项,但是使用npm update时,最新的npm版本将安装在您的本地环境中。这对于全局项目是不希望的,因为您可能会在全局环境中发现未满足的依赖关系问题。

我建议使用npm install