Node.js 错误:找不到 express 模块
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/17162308/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Node.js Error: Cannot find module express
提问by Dmitry
I wrote my first node.js app, but it can't find express library:
我写了我的第一个 node.js 应用程序,但它找不到 express 库:
C:\ChatServer\Server>node server.js
module.js:340
throw err;
^
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:364:17)
at require (module.js:380:17)
at Object.<anonymous> (C:\ChatServer\Server\server.js:6:9)
at Object.<anonymous> (C:\ChatServer\Server\server.js:25:4)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
But express is intalled (with -gkey):
但是快递是安装的(带-g钥匙):
C:\ChatServer\Server>npm install -g express
npm http GET https://registry.npmjs.org/express
npm http 304 https://registry.npmjs.org/express
npm http GET https://registry.npmjs.org/connect/2.7.11
npm http GET https://registry.npmjs.org/commander/0.6.1
npm http GET https://registry.npmjs.org/range-parser/0.0.4
npm http GET https://registry.npmjs.org/mkdirp/0.3.4
npm http GET https://registry.npmjs.org/cookie/0.1.0
npm http GET https://registry.npmjs.org/buffer-crc32/0.2.1
npm http GET https://registry.npmjs.org/fresh/0.1.0
npm http GET https://registry.npmjs.org/methods/0.0.1
npm http GET https://registry.npmjs.org/send/0.1.0
npm http GET https://registry.npmjs.org/cookie-signature/1.0.1
npm http GET https://registry.npmjs.org/debug
npm http 304 https://registry.npmjs.org/mkdirp/0.3.4
npm http 304 https://registry.npmjs.org/range-parser/0.0.4
npm http 304 https://registry.npmjs.org/cookie/0.1.0
npm http 304 https://registry.npmjs.org/connect/2.7.11
npm http 304 https://registry.npmjs.org/commander/0.6.1
npm WARN package.json [email protected] No repository field.
npm http 304 https://registry.npmjs.org/buffer-crc32/0.2.1
npm http 304 https://registry.npmjs.org/fresh/0.1.0
npm http 304 https://registry.npmjs.org/methods/0.0.1
npm http 304 https://registry.npmjs.org/send/0.1.0
npm http 304 https://registry.npmjs.org/cookie-signature/1.0.1
npm WARN package.json [email protected] No repository field.
npm WARN package.json [email protected] No readme data.
npm WARN package.json [email protected] No repository field.
npm WARN package.json [email protected] No repository field.
npm WARN package.json [email protected] No repository field.
npm http 304 https://registry.npmjs.org/debug
npm http GET https://registry.npmjs.org/mime/1.2.6
npm http GET https://registry.npmjs.org/qs/0.6.5
npm http GET https://registry.npmjs.org/send/0.1.1
npm http GET https://registry.npmjs.org/formidable/1.0.14
npm http GET https://registry.npmjs.org/cookie/0.0.5
npm http GET https://registry.npmjs.org/bytes/0.2.0
npm http GET https://registry.npmjs.org/pause/0.0.1
npm http 304 https://registry.npmjs.org/mime/1.2.6
npm http 304 https://registry.npmjs.org/bytes/0.2.0
npm WARN package.json [email protected] No repository field.
npm http 304 https://registry.npmjs.org/pause/0.0.1
npm WARN package.json [email protected] No repository field.
npm http 304 https://registry.npmjs.org/formidable/1.0.14
npm http 304 https://registry.npmjs.org/qs/0.6.5
npm http 304 https://registry.npmjs.org/send/0.1.1
npm http 304 https://registry.npmjs.org/cookie/0.0.5
npm http GET https://registry.npmjs.org/mime
npm http 304 https://registry.npmjs.org/mime
C:\Users\Dmitry\AppData\Roaming\npm\express -> C:\Users\Dmitry\AppData\Roaming\npm\node_modules\express\bin\express
npm WARN package.json [email protected] 'repositories' (plural) Not supported.
npm WARN package.json Please pick one as the 'repository' field
npm WARN package.json [email protected] No repository field.
npm WARN package.json [email protected] No repository field.
[email protected] C:\Users\Dmitry\AppData\Roaming\npm\node_modules\express
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected] ([email protected])
└── [email protected] ([email protected], [email protected], [email protected], [email protected], [email protected], [email protected])
Some information:
一些信息:
C:\ChatServer\Server>npm --version
1.2.24
C:\ChatServer\Server>node --version
v0.10.9
C:\ChatServer\Server>npm --version
1.2.24
C:\ChatServer\Server>npm ls -g installed express
npm WARN package.json [email protected] No repository field.
npm WARN package.json [email protected] No repository field.
npm WARN package.json [email protected] No repository field.
npm WARN package.json [email protected] No repository field.
npm WARN package.json [email protected] No repository field.
npm WARN package.json [email protected] 'repositories' (plural) Not supported.
npm WARN package.json Please pick one as the 'repository' field
npm WARN package.json [email protected] No repository field.
npm WARN package.json [email protected] No repository field.
npm WARN package.json [email protected] No repository field.
npm WARN package.json [email protected] No repository field.
C:\Users\Dmitry\AppData\Roaming\npm
└── [email protected]
C:\ChatServer\Server>npm ls installed express
C:\ChatServer\Server
└── (empty)
How can I solve this problem? (MUSTI install it without -g?)
我怎么解决这个问题?(我必须安装它-g吗?)
回答by Golo Roden
You need to install Express locally into the context of your application (node_modulesfolder):
您需要在本地将 Express 安装到您的应用程序(node_modules文件夹)的上下文中:
$ npm install express
The reason for this is that applications always look in their local context for any dependencies. The global installation is only for setting up system-wide available binaries, such as unit test runners or bootstrappers or things like that.
这样做的原因是应用程序总是在其本地上下文中查找任何依赖项。全局安装仅用于设置系统范围内可用的二进制文件,例如单元测试运行程序或引导程序或类似的东西。
With Express, when you install it globally, you get an expressbinary that can bootstrap an application for you. For more information, type
使用 Express,当您全局安装它时,您将获得一个express可以为您引导应用程序的二进制文件。有关更多信息,请键入
$ express --help
So, to answer your final question: YES, you need to install it without -g.
因此,要回答您的最后一个问题:YES,您需要在没有-g.
回答by Mustafamg
For me it worked when installed express locally with --save option as follow:
对我来说,它在使用 --save 选项在本地安装 express 时起作用,如下所示:
$ npm install express --save
回答by Reza Ebrahimi
Check if you are not install expressmodule, use this command:
检查你是否没有安装express模块,使用这个命令:
npm install express
and if your node_modulesdirectory is in another place, set NODE_PATHenvirnment variable:
如果您的node_modules目录在另一个地方,请设置NODE_PATH环境变量:
set NODE_PATH=your\directory\to\node_modules;%NODE_PATH%
回答by Luca Davanzo
Golo have explain well the solution, but I might add a clarification:
sometimes node modules are installed in
Golo 已经很好地解释了解决方案,但我可能会添加一个澄清:
有时节点模块安装在
/usr/local/lib/node_modules
and when you launch node blabla.js modules are searched in
当你启动 node blabla.js 模块时,会在
/lib
So a solution is to create a symbolic link:
所以一个解决方案是创建一个符号链接:
sudo ln -s /usr/local/lib/node_modules/ /lib/node_modules
回答by Rahul Gupta
In your case your expressmodule is installed at C:\Users\Dmitry\AppData\Roaming\npm\node_modules\express, but you need to get this module in to your project directory. So you should copy the file the expressmodule folders from C:\Users\Dmitry\AppData\Roaming\npm\node_modules\to your project directory as : C:\ChatServer\Server\node_modules. If you do not have a folder named 'node_modules' in your project folder, then create it first and paste those files into this folder. This method worked for me on my windows pc. Restart your node server and once again run the command node C:\ChatServer\Server>node server.js. It should work now !!!!
在您的情况下,您的express模块安装在C:\Users\Dmitry\AppData\Roaming\npm\node_modules\express,但您需要将此模块放入您的项目目录中。所以,你应该将文件复制express从模块文件夹C:\Users\Dmitry\AppData\Roaming\npm\node_modules\到你的项目目录为:C:\ChatServer\Server\node_modules。如果您的项目文件夹中没有名为“node_modules”的文件夹,请先创建它并将这些文件粘贴到此文件夹中。这种方法在我的 Windows 电脑上对我有用。重新启动您的节点服务器并再次运行命令 node C:\ChatServer\Server>node server.js。它现在应该可以工作了!!!!
回答by Nickolay Savchenko
On Ubuntu-based OS you can try
在基于 Ubuntu 的操作系统上,您可以尝试
sudo apt-get install node-express
its working for me on Mint
它在 Mint 上对我有用
回答by Krishna Ganeriwal
Given you have installed nodeon your system, install Express locally for your project using the following for Windows:
鉴于您已经在系统上安装了节点,请使用以下适用于 Windows 的项目在本地安装 Express:
npm install express
or
或者
npm install express --save
You might give it global access by using:
您可以使用以下方法为其提供全局访问权限:
npm install -g express --save
回答by Adrian Moisa
I had this error in vscode, although the modules where installed. I am using typescript and express. In the server.tsfiles all the imports had red squiggly underlines. It turns out I had a faulty tsconfig.jsonfile.
尽管安装了模块,但我在 vscode 中遇到了这个错误。我正在使用打字稿和快递。在server.ts文件中,所有导入都有红色波浪线下划线。原来我有一个错误的tsconfig.json文件。
{
"compileOnSave": false,
"compilerOptions": {
"module": "commonjs", // Previously this value was `es6`
"target": "es6",
"allowSyntheticDefaultImports": true,
"baseUrl": "public",
"sourceMap": true,
"outDir": "dist",
"jsx": "react",
"strict": true,
"preserveConstEnums": true,
"removeComments": true,
"noImplicitAny": true,
"allowJs": true
},
"exclude": [
"node_modules",
"build"
]
}
回答by Anayatullah Khan
go to your application directory and install the express module using the below command npm install express --savethen list the all install module using the below command npm lsyou will see all the locally install modules.
转到您的应用程序目录并使用以下命令安装 express 模块 npm install express --save然后使用以下命令列出所有安装模块 npm ls您将看到所有本地安装模块。
回答by Dev
create one folder in your harddisk e.g sample1 and go to command prompt type :cd and gives the path of sample1 folder and then install all modules...
在您的硬盘中创建一个文件夹,例如 sample1 并转到命令提示符键入 :cd 并给出 sample1 文件夹的路径,然后安装所有模块...
npm install express
npm install jade
npm install socket.io
npm 安装快递
npm 安装玉
npm 安装 socket.io
and then whatever you are creating application save in sample1 folder
然后无论您创建什么应用程序都保存在 sample1 文件夹中
try it...
尝试一下...

