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