![](/img/trans.png)
[英]Cannot run node.js example. module.js:340 throw err cannot find module
[英]module.js:338 throw err in 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”。
似乎該腳本正在使用“ express”(“ merge-descriptors”實際上看起來像是“ express”的依賴項)-因為這並沒有引發錯誤,因此似乎已經安裝了某些依賴項。
因此,您可以嘗試通過npm install
或npm update
安裝缺少的內容。
更新:根據npmjs.org, “ merge-descriptors”是“ express”的依賴項。 查看您的stacktrace顯示您已全局安裝了“ express”-因此,您應該嘗試npm update -g
如果那不能解決您的問題,您應該看看這個問題 。
npm更新
當模塊安裝順序不完美或存在多個模塊時,我會看到此信息。
npm update可以解決此問題,建議使用不正確的版本。
每當您收到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
具體取決於用戶權限的命令。
模塊名稱和文件名不匹配時,會發生此錯誤。 對模塊和文件名使用相同的名稱后即可解決。 例如
module - Hello,
File name - Hello.js
您應該安裝merge-descriptors模塊。 打開終端或命令提示符,然后運行以下命令:
npm install --save merge-descriptors
我也遇到了同樣的問題,您應該嘗試npm install,也可以選擇npm update,但是使用npm update時,最新的npm版本將安裝在您的本地環境中。 這對於全局項目是不希望的,因為您可能會在全局環境中發現未滿足的依賴關系問題。
我建議使用npm install
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.