I wrote my first node.js app, but it can't find express library:
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 -g
key):
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 range-parser@0.0.4 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 methods@0.0.1 No repository field.
npm WARN package.json methods@0.0.1 No readme data.
npm WARN package.json fresh@0.1.0 No repository field.
npm WARN package.json send@0.1.0 No repository field.
npm WARN package.json cookie-signature@1.0.1 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 bytes@0.2.0 No repository field.
npm http 304 https://registry.npmjs.org/pause/0.0.1
npm WARN package.json pause@0.0.1 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 policyfile@0.0.4 'repositories' (plural) Not supported.
npm WARN package.json Please pick one as the 'repository' field
npm WARN package.json assert-plus@0.1.2 No repository field.
npm WARN package.json ctype@0.5.2 No repository field.
express@3.2.6 C:\Users\Dmitry\AppData\Roaming\npm\node_modules\express
├── methods@0.0.1
├── fresh@0.1.0
├── range-parser@0.0.4
├── cookie-signature@1.0.1
├── buffer-crc32@0.2.1
├── cookie@0.1.0
├── debug@0.7.2
├── commander@0.6.1
├── mkdirp@0.3.4
├── send@0.1.0 (mime@1.2.6)
└── connect@2.7.11 (pause@0.0.1, qs@0.6.5, bytes@0.2.0, cookie@0.0.5, formidable@1.0.14, send@0.1.1)
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 cookie-signature@1.0.1 No repository field.
npm WARN package.json fresh@0.1.0 No repository field.
npm WARN package.json methods@0.0.1 No repository field.
npm WARN package.json range-parser@0.0.4 No repository field.
npm WARN package.json send@0.1.0 No repository field.
npm WARN package.json policyfile@0.0.4 'repositories' (plural) Not supported.
npm WARN package.json Please pick one as the 'repository' field
npm WARN package.json bytes@0.2.0 No repository field.
npm WARN package.json pause@0.0.1 No repository field.
npm WARN package.json assert-plus@0.1.2 No repository field.
npm WARN package.json ctype@0.5.2 No repository field.
C:\Users\Dmitry\AppData\Roaming\npm
└── express@3.2.6
C:\ChatServer\Server>npm ls installed express
C:\ChatServer\Server
└── (empty)
How can I solve this problem? ( MUST I install it without -g
?)
You need to install Express locally into the context of your application ( node_modules
folder):
$ 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 express
binary that can bootstrap an application for you. For more information, type
$ express --help
So, to answer your final question: YES , you need to install it without -g
.
对我来说,它在使用 --save 选项在本地安装 express 时起作用,如下所示:
$ npm install express --save
Check if you are not install express
module, use this command:
npm install express
and if your node_modules
directory is in another place, set NODE_PATH
envirnment variable:
set NODE_PATH=your\directory\to\node_modules;%NODE_PATH%
Golo have explain well the solution, but I might add a clarification:
sometimes node modules are installed in
/usr/local/lib/node_modules
and when you launch node blabla.js modules are searched in
/lib
So a solution is to create a symbolic link:
sudo ln -s /usr/local/lib/node_modules/ /lib/node_modules
In your case your express
module 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 express
module 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 !!!!
On Ubuntu-based OS you can try
sudo apt-get install node-express
its working for me on Mint
Given you have installed node on your system, install Express locally for your project using the following for Windows:
npm install express
or
npm install express --save
You might give it global access by using:
npm install -g express --save
I had this error in vscode, although the modules where installed. I am using typescript and express. In the server.ts
files all the imports had red squiggly underlines. It turns out I had a faulty tsconfig.json
file.
{
"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"
]
}
installing express globally will not work on your local project so you need to install it locally for use .
npm install express
Hope this will work
Thank you
create one folder in your harddisk eg sample1 and go to command prompt type :cd and gives the path of sample1 folder and then install all modules...
npm install express
npm install jade
npm install socket.io
and then whatever you are creating application save in sample1 folder
try it...
转到您的应用程序目录并使用以下命令安装 express 模块npm install express --save然后使用以下命令列出所有安装模块npm ls您将看到所有本地安装模块。
I had the same error following the example on this book: "Kubernetes Up & Running".
I see many answers suggesting to install express "by hand" but I'm not convinced is the best solution.
Because we are using package.json (I can see it in the logs) and the right way to build the app is running npm install
, I added the express dependency in the package.json file.
"dependencies": {
"express": "^4.17.1"
}
I get the current version with npm search express
.
I hit the same problem. I had express installed globally at /usr/local/bin/. When I do 'npm install', express was not created in node_modules of local directory.
This worked for me on MacOS X Sierra
I'm not proud sharing this, but in my case I had:
require('express.handlebars')
//and the correct form is:
require('express-handlebars'); //Use dash instead.
1.first check if express is install at correct location. 2. npm install express (run this command). 3. express will save under your "node_modules" folder
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.