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。
- 检查您的$ HOME中是否有文件名.npmrc
- 如果它有'全球=真',改为'全球=假'
- 现在在应用程序目录中执行'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" ] }