Node.js错误:无法find模块快车

我写了我的第一个node.js应用程序,但无法find快速库:

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) 

但是表示安装(用-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 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) 

一些信息:

 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) 

我怎么解决这个问题? (我必须安装它没有-g ?)

您需要将Express本地安装到您的应用程序( node_modules文件夹)的上下文中:

 $ npm install express 

原因是应用程序总是在其本地上下文中查找任何依赖关系。 全局安装仅用于设置系统范围的可用二进制文件,如unit testing运行程序或引导程序或类似的东西。

使用Express,当你在全球安装时,你会得到一个express二进制文件,可以为你启动一个应用程序。 有关更多信息,请键入

 $ express --help 

所以,要回答你的最后一个问题: 是的 ,你需要安装它没有-g

对我来说,它工作时安装expression本地与 – 保存选项如下:

 $ npm install express --save 

检查你是否没有安装express模块,使用这个命令:

  npm install express 

如果您的node_modules目录位于其他位置,请设置NODE_PATH环境variables:

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

在你的情况下,你的express模块安装在C:\Users\Dmitry\AppData\Roaming\npm\node_modules\express ,但是你需要把这个模块放到你的工程目录中。 所以你应该将C:\Users\Dmitry\AppData\Roaming\npm\node_modules\express模块文件夹复制到你的项目目录中: C:\ChatServer\Server\node_modules 。 如果您的项目文件夹中没有名为“node_modules”的文件夹,请先将其创build并将这些文件粘贴到该文件夹​​中。 这种方法在我的Windows PC上工作。 重新启动节点服务器,并再次运行命令节点C:\ChatServer\Server>node server.js 。 它应该现在工作!

Golo已经解释了很好的解决scheme,但我可能会添加一个说明:
有时节点模块安装在

 /usr/local/lib/node_modules 

当你启动节点blabla.js模块被search

 /lib 

所以一个解决scheme是创build一个符号链接:

 sudo ln -s /usr/local/lib/node_modules/ /lib/node_modules 

在硬盘上创build一个文件夹,例如sample1,然后进入命令提示符types:cd,并给出sample1文件夹的path,然后安装所有模块。

npm install express

npm安装玉器

npm安装socket.io

然后无论你正在创build应用程序保存在sample1文件夹

尝试一下…

在基于Ubuntu的操作系统上,你可以试试

 sudo apt-get install node-express 

它为我在薄荷工作

鉴于您的系统上已经安装了节点 ,请使用以下适用于Windows的本地安装Express的项目:

 npm install express 

要么

 npm install express --save 

您可以使用以下命令为其授予全局访问权

 npm install -g express --save 
 npm install; 

这在Linux上适用于我。

我遇到了同样的问题。 我已经在/ usr / local / bin /全局安装了express。 当我做'npm install'的时候,express并没有在本地目录的node_modules中创build。

  1. 检查您的$ HOME中是否有文件名.npmrc
  2. 如果它有'全球=真',改为'全球=假'
  3. 现在在应用程序目录中执行'npm install'。 更有可能的是,应该在应用程序目录中的node_modules(local)中安装所有依赖于程序包的模块。
  • sudo brew卸载节点
  • 酿造更新
  • 酿造升级
  • 酿造清理
  • brew安装节点
  • sudo chown -R $(whoami)/ usr / local
  • brew链接 – 覆盖节点
  • sudo brew postinstall节点

这在MacOS X Sierra上适用于我

进入你的应用程序目录并使用下面的命令安装express模块npm install express –save然后使用下面的命令列出所有的安装模块npm ls你会看到所有的本地安装模块。

我在vscode中有这个错误,虽然安装了模块。 我正在使用打字稿和expression。 在server.ts文件中,所有导入都有红色的下划线。 事实certificate,我有一个错误的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" ] }