Node.js错误:无法找到模块表达

Dmi*_*try 128 node.js npm express

我写了我的第一个node.js应用程序,但它找不到快递库:

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)
Run Code Online (Sandbox Code Playgroud)

但快递被挂了(带-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)
Run Code Online (Sandbox Code Playgroud)

一些信息:

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)
Run Code Online (Sandbox Code Playgroud)

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

Gol*_*den 253

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

$ npm install express
Run Code Online (Sandbox Code Playgroud)

这样做的原因是应用程序始终在其本地上下文中查找任何依赖项.全局安装仅用于设置系统范围的可用二进制文件,例如单元测试运行程序或引导程序或类似的东西.

使用Express,当您在全局安装它时,您将获得一个express可以为您引导应用程序的二进制文件.有关更多信息,请键入

$ express --help
Run Code Online (Sandbox Code Playgroud)

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

  • **npm install**在您创建应用程序后.它将安装所有依赖项. (11认同)
  • 您可以通过cd将全局安装的依赖项链接到项目根目录,然后使用"npm link <some dependency name>" (3认同)

Mus*_*amg 19

对我来说,当使用--save选项在本地安装快速时,它可以工作如下:

$ npm install express --save
Run Code Online (Sandbox Code Playgroud)


Rez*_*imi 11

检查您是否不是安装express模块,使用此命令:

 npm install express
Run Code Online (Sandbox Code Playgroud)

如果您的node_modules目录位于其他地方,请设置NODE_PATHenvirnment变量:

 set NODE_PATH=your\directory\to\node_modules;%NODE_PATH%
Run Code Online (Sandbox Code Playgroud)


Luc*_*nzo 5

Golo已经很好地解释了解决方案,但我可能会补充说明:
有时会安装节点模块

/usr/local/lib/node_modules
Run Code Online (Sandbox Code Playgroud)

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

/lib
Run Code Online (Sandbox Code Playgroud)

所以解决方案是创建一个符号链接:

sudo ln -s /usr/local/lib/node_modules/ /lib/node_modules
Run Code Online (Sandbox Code Playgroud)


Kri*_*wal 5

如果您已在系统上安装了Node,请使用以下 Windows 版本在本地为您的项目安装 Express:

npm install express
Run Code Online (Sandbox Code Playgroud)

或者

npm install express --save
Run Code Online (Sandbox Code Playgroud)

您可以使用以下方法为其提供全局访问权限:

npm install -g express --save
Run Code Online (Sandbox Code Playgroud)