Node.js错误:找不到模块“express”

181

我是Node.js的新手,尝试学习使用express构建我的第一个Web应用程序。我卡在了我的第一个示例代码上,需要一些帮助来使其运行。在发布这个问题之前,我在stackoverflow上进行了搜索,找到了一些类似的问题,但仍然无法解决。

Error: Cannot find module 'express'

我使用的是Mac OS 10.8.2操作系统。我已经安装了nvm来使用Node.js。

node.js: 0.8.20 path to node:    /Users/feelexit/nvm/v0.8.20/bin/node
path to express: /Users/feelexit/nvm/node_modules/express

这是我的示例代码:该文件位于:

/Users/feelexit/WebstormProjects/learnnode/node_modules/index.js


请注意,本文中的所有HTML标签均已保留。
var express = require('express');
var app = express();
app.get('/', function(req, res){
    res.send('welcome to express');
});
app.listen(3000);

当我尝试运行命令node index.js时,出现以下错误消息,请帮助我修复它。

谢谢。

Error: Cannot find module 'express'
    at Function.Module._resolveFilename (module.js:338:15)
    at Function.Module._load (module.js:280:25)
    at Module.require (module.js:362:17)
    at require (module.js:378:17)
    at Object.<anonymous> (/Users/feelexit/WebstormProjects/learnnode/node_modules/index.js:1:81)
    at Module._compile (module.js:449:26)
    at Object.Module._extensions..js (module.js:467:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.runMain (module.js:492:10)
feelexits-Mac:node_modules feelexit$ 

更新以回答chovy的问题:
feelexits-Mac:~ feelexit$ npm install
npm ERR! install Couldn't read dependencies
npm ERR! Error: ENOENT, open '/Users/feelexit/package.json'
npm ERR! If you need help, you may report this log at:
npm ERR!     <http://github.com/isaacs/npm/issues>
npm ERR! or email it to:
npm ERR!     <npm-@googlegroups.com>

npm ERR! System Darwin 12.2.0
npm ERR! command "/Users/feelexit/nvm/v0.8.20/bin/node" "/Users/feelexit/nvm/v0.8.20/bin/npm" "install"
npm ERR! cwd /Users/feelexit
npm ERR! node -v v0.8.20
npm ERR! npm -v 1.2.11
npm ERR! path /Users/feelexit/package.json
npm ERR! code ENOENT
npm ERR! errno 34
npm ERR! 
npm ERR! Additional logging details can be found in:
npm ERR!     /Users/feelexit/npm-debug.log
npm ERR! not ok code 0

40
你有没有输入 npm install - chovy
1
你确定express库在你的“node_modules”文件夹中吗?你可能还想尝试将_index.js_文件向上移动一个目录到“/Users/feelexit/WebstormProjects/learnnode/”,并且不要动node_modules文件夹。 - Default
1
请发布您的 package.json 文件。这将有助于调试问题。 - Akhil Raina
@chovy,我使用npm install express来安装express。那么仅使用“npm install”会做什么? - qinking126
可能是重复的问题:Node.js错误:找不到模块express - Evan Carroll
显示剩余5条评论
24个回答

247

它说

Cannot find module 'express'

你是否已经安装了 Express?如果没有,请运行以下命令。

npm install express

然后重新运行您的程序。


2
这并没有解决我的问题。npm install express 显示了这个错误 npm ERR! Error: UNKNOWN, symlink '../express/bin/express'。看起来是一个更深层次的问题。 - Sliq
如果您尚未修复npm的目录权限,请使用sudo。无论如何,“sudo npm install”是一个更好的选择。 - Gaurav Gupta
@Sliq 我尝试了你的解决方案,但是我无法解决我的问题,你能帮我吗? - VjyV
1
不要忽略“并重新运行程序”。在我的情况下,我不得不在我的“进程管理器”中重新启动该进程。它没有自动重启。 - tedi
但是毫无疑问,一个构建完成的 bundle 应该能够在没有依赖项的情况下运行,不是吗? - iMe
显示剩余2条评论

53

在您的终端中输入 express 后,执行以下操作:

npm install

安装所有依赖项。

然后你可以运行node app来启动服务器。


9
你应该指出这需要一个包清单文件,即 .json 文件。但这并不总是必需的。 - Pogrindis
@VjyV应该在与您的.js节点文件相同的目录中。但是它应该在目录中具有package.json文件,以便可以安装所需的依赖项。 - Saurabh Rana

40
npm install --save express

这对我有用。只需再次运行express.js安装即可。


39

检查您是否已安装express模块。如果没有,请使用此命令:

检查您是否已安装express模块。如果没有,请使用此命令:

npm install express

如果你的node_modules目录在其他地方,可以设置NODE_PATH环境变量:

set NODE_PATH=your\directory\to\node_modules;%NODE_PATH%

16
对于那些贴出“CTRL+C / CTRL+V”、“npm install”的答案的人,这就是正确的回答:你真的认为有人会在没有先检查是否安装了东西之前尝试运行它吗?说真的… - Claudio Holanda
4
仅添加一个细节:您需要在应用程序的目录中运行安装 Express 命令,而不是在您的 Node.js 安装文件夹或 AppData 中的 npm 文件夹中。这是我犯的错误,因为我以为它是某种 SDK 插件。 - Alex

13

在您的应用程序目录中使用npm install将解决此问题,因为它将安装所需的所有内容。


8

除非您设置了 Node_PATH,否则唯一的选择是在应用程序目录中安装 express,例如 npm install express --save。 可能已经安装了 Express,但由于某些原因 node 找不到它。


1
这个方法对我有效,最好在与你的.js文件相同的目录中执行安装命令。此外,您可以运行“npm init”命令来创建package.json文件以避免进一步的问题。 - emarshah

5

虽然这是一个旧帖子,但我也遇到了同样的错误。我通过进入我的NodeApp所在的目录并运行npm install -d来解决了这个问题。


不确定为什么或者它如何起作用,但这会将其安装在您的devdependencies中:https://docs.npmjs.com/cli/install - Guy Lowe
1
@GuyLowe -d 是 npm 的调试模式,而 -D 则是开发依赖项。 - John Pavek

4
有时在安装节点模块时会出现错误 尝试以下步骤:
  1. 删除node_modules
  2. 运行npm install命令

3
您的Express模块位于与项目不同的目录中。这可能是问题所在,因为您正在尝试在本地使用require()引入它。尝试将Express模块从/Users/feelexit/nvm/node_modules/express移动到/Users/feelexit/WebstormProjects/learnnode/node_modules/express此信息可以为您提供有关node_module文件结构的更多详细信息。

3

针对这种情况,请使用您的命令提示符在要运行程序的相应文件夹中运行npm install express命令。例如,我想在F:\nodeSample中运行表达式模块程序server.js。所以请在那个特定的文件夹中运行“npm install express”,然后再运行server.js。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接