node.js,错误:找不到模块“表达”


125

我是Node.js的新手,尝试学习Express来构建我的第一个Web应用程序。我陷入了我的第一个示例代码,需要一些帮助来使其运行。在发布此问题之前,我确实在堆栈溢出上进行搜索,发现了一些类似的问题,但仍无法解决。

错误:找不到模块“表达”

我正在使用Mac OS 10.8.2。我一直在使用Node.js的安装nvm

node.js:0.8.20到节点的路径:/Users/feelexit/nvm/v0.8.20/bin/节点表示的路径:/ Users / feelexit / nvm / node_modules / express

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

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

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


30
您输入类型npm install
吗-chovy

1
您确定快递库位于“ node_modules”文件夹中吗?您可能还想尝试将index.js文件上移一个目录到“ / Users / feelexit / WebstormProjects / learnnode /”,并单独保留node_modules文件夹。
默认值

1
请发布您的package.json文件。这将有助于调试问题。
Akhil Raina

@chovy,我使用npm install express来安装express。只有“ npm install”有什么作用?
qinking126

Answers:


157

它说

 Cannot find module 'express'

您是否已安装Express?如果没有,请运行此程序。

 npm install express

并再次运行程序。


1
就我而言,这不能解决问题。npm install express显示此错误npm ERR! Error: UNKNOWN, symlink '../express/bin/express'。似乎是一个更深层次的问题。
Sliq 2013年

如果尚未修复npm的目录权限,请使用sudo。无论如何,“ sudo npm install”是一个更好的选择。
Gaurav Gupta 2014年

symlink如果在全球范围内安装,经常会发生错误,是的,symlink断开了。尝试npm link重新创建相应的链接...
Frank Nocke

@Sliq我尝试了您的解决方案,但我无法解决我的问题,您能帮我吗?
VjyV

不要忽略“并再次运行程序”。以我为例,我必须重新启动该过程process manager。它本身并没有重新启动。
塔德伊

42

在终端中表达快递之后,

 npm install

安装所有依赖项。

然后,您可以执行节点应用程序以运行服务器。


7
您应该指出,这需要包列表文件,即.json。而且并非总是如此。
Pogrindis

您拥有.js节点文件的目录中的@VjyV。但是它应该在目录中具有package.json文件,以便它可以安装所需的依赖项。
索拉布拉纳

34

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

npm install express

如果node_modules目录位于另一个位置,请设置NODE_PATH环境变量:

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

12
是正确的答案,对于发布以下CTRL+C / CTRL+V npm install答案的每个人:您是否真的认为有人会尝试运行某些内容而不检查其是否先安装?认真地...
克劳迪奥·奥兰达2014年

3
只需添加一个小细节:您需要在应用程序的目录中而不是 Node.js安装文件夹或AppData中的npm-folder中运行install express命令。因为那是我犯的错误,因为我认为那是某种SDK附加组件。
Alex


11

从您的应用程序目录内进行npm install将解决此问题,因为它将安装所需的所有内容


5

在这里挖一个旧线程,但是我遇到了同样的错误,我通过导航到我的NodeApp所在的目录并运行来解决 npm install -d


不确定原因或重要性,但这会以您的开发依赖关系安装它:docs.npmjs.com/cli/install
Guy Lowe

1
@GuyLowe -d是npm的调试程序,-D是开发人员依赖项。
约翰·帕维克

4

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


这对我有用,最好在.js文件所在的目录中执行install命令。另外,您可以运行命令“ npm init”来创建package.json文件,以避免进一步的问题。
emarshah

3

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


2

如果您选择主文件位于/Users/feelexit/WebstormProjects/learnnode/node_modules/index.js然后表达需要被定位在/Users/feelexit/WebstormProjects/learnnode/node_modules/node_modules作为节点总是会在模块./node_modules(和其内部的文件夹)当路径不下手.//更多资讯

我想你想念你的主文件放在模块文件夹中


2

在这种情况下,请使用cmd提示符针对要运行程序的相应文件夹运行npm install express命令。示例我想在F:\ nodeSample中运行快速模块程序server.js。因此,在该特定文件夹中运行“ npm install express”,然后运行server.js


1

在极少数情况下,npm缓存可能会损坏。对我来说,有效的是:

npm cache clean --force

通常,程序包管理器将自行检测损坏和重新获取,因此通常不需要这样做。但是,以我为例,Windows 10崩溃了几次,我怀疑这可能是在获取操作期间发生的。希望它能对某人有所帮助!

详细信息:https : //docs.npmjs.com/cli/cache


1

我遇到了一个类似的问题,最后是一些旧的依赖关系困扰了我的Heroku服务器。

在项目文件夹中,我运行了:

npm uninstall
npm install

希望对您有所帮助


0

npm ERR! Error: ENOENT, open '/Users/feelexit/package.json'

发生这种情况的原因是npm工作时缺少权限或文件未链接。

这意味着,npm以该用户身份执行没有足够的权限来读取/写入文件,在这种情况下为package.json。

尝试sudo在整个命令之前添加-它应该可以解决。

$ sudo npm install -g express
$ Password:*******

密码将是您的Mac的管理员密码。

-g标志将在节点的全局上下文中安装此模块(表达)-意味着节点将/应该express从任何js文件中识别模块,而不必提供正在使用的模块的完整路径。

希望这可以帮助!!


0

我有同样的问题。我的问题是在安装Express之前,我必须在命令行上更改为Node.js项目目录。

cd /Users/feelexit/WebstormProjects/learnnode/node_modules/

0

我猜这是Colt Steele的Web开发课程的课程工作……我一直在寻找与为什么我也遇到该错误的答案相同的答案。到您正在使用的新文件夹中...这对我有用。


0

npm install express body-parser cookie-parser multer --save在与源代码nodejs文件相同的目录中运行命令以解决此问题。P / s:运行命令后检查目录以了解更多信息!


0
D:\learn\Node.js\node app.js
module.js:549
    throw err;
    ^

Error: Cannot find module 'body-parser'
    at Function.Module._resolveFilename (module.js:547:15)
    at Function.Module._load (module.js:474:25)
    at Module.require (module.js:596:17)
    at require (internal/module.js:11:18)

有时版本与package.json不匹配,可以通过检查package.json然后使用以下命令来解决此问题:npm install body-parser@1.13.2它已为我解决。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.