159

我写了我的第一个 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)

但是 express 已安装(带-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吗?)

4

16 回答 16

307

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

$ npm install express

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

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

$ express --help

所以,要回答你的最后一个问题:的,你需要在没有-g.

于 2013-06-18T06:56:23.467 回答
22

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

$ npm install express --save
于 2014-11-12T09:51:34.453 回答
13

检查您是否未安装express模块,请使用以下命令:

 npm install express

如果您的node_modules目录在另一个地方,请设置NODE_PATH环境变量:

 set NODE_PATH=your\directory\to\node_modules;%NODE_PATH%
于 2013-11-22T10:25:17.527 回答
5

Golo 已经很好地解释了解决方案,但我可能会添加一个澄清:
有时节点模块安装在

/usr/local/lib/node_modules

并且当您启动节点 blabla.js 时,会在其中搜索模块

/lib

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

sudo ln -s /usr/local/lib/node_modules/ /lib/node_modules
于 2013-11-18T16:16:52.463 回答
4

在您的情况下,您的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。它现在应该可以工作了!!!!

于 2014-05-09T06:17:34.657 回答
4

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

npm install express

或者

npm install express --save

您可以使用以下命令授予它全局访问权限:

npm install -g express --save
于 2016-09-23T12:59:37.867 回答
3

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

sudo apt-get install node-express

它在薄荷上为我工作

于 2015-09-02T16:57:48.227 回答
3

全局安装 express 不适用于您的本地项目,因此您需要在本地安装它以供使用。

npm install express

希望这会奏效

谢谢

于 2020-02-22T13:23:12.613 回答
2

尽管安装了模块,但我在 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"
    ]
}
于 2017-08-30T22:59:10.407 回答
1

在您的硬盘中创建一个文件夹,例如 sample1 并转到命令提示符类型 :cd 并给出 sample1 文件夹的路径,然后安装所有模块...

npm 安装快递

npm 安装玉

npm 安装 socket.io

然后无论您创建什么应用程序都保存在 sample1 文件夹中

尝试一下...

于 2014-02-20T11:38:09.597 回答
1

转到您的应用程序目录并使用以下命令安装 express 模块 npm install express --save 然后使用以下命令列出所有安装模块 npm ls 您将看到所有本地安装模块。

于 2017-01-07T19:56:19.347 回答
1

在本书中的示例之后,我遇到了同样的错误:“Kubernetes Up & Running”。
我看到许多建议“手动”安装express的答案,但我不相信这是最好的解决方案。
因为我们正在使用package.json(我可以在日志中看到它)并且构建应用程序的正确方法正在运行,所以我在package.json文件中npm install添加了express依赖项。

 "dependencies": {
    "express": "^4.17.1"
}

我用npm search express.

于 2020-07-12T14:02:08.200 回答
0

我遇到了同样的问题。我已经在 /usr/local/bin/ 全局安装了 express。当我执行“npm install”时,没有在本地目录的 node_modules 中创建 express。

  1. 检查您的 $HOME 中是否有文件名 .npmrc
  2. 如果它有'global = true',则更改为'global = false'
  3. 现在在应用程序目录中执行“npm install”。更有可能的是,您应该将所有依赖包的模块安装在应用程序目录中的 node_modules (本地)中。
于 2016-11-03T23:55:50.127 回答
0
  • sudo brew 卸载节点
  • 酿造更新
  • 冲泡升级
  • 冲泡清理
  • 冲泡安装节点
  • sudo chown -R $(whoami) /usr/local
  • 酿造链接--覆盖节点
  • sudo brew postinstall 节点

这在MacOS X Sierra上对我有用

于 2016-11-26T19:29:06.633 回答
0

我并不自豪分享这一点,但就我而言,我有:

 require('express.handlebars')

 //and the correct form is:
 require('express-handlebars'); //Use dash instead.
于 2019-10-29T20:57:06.763 回答
0

1.首先检查快递是否安装在正确的位置。2. npm install express(运行此命令)。3. express 将保存在您的“node_modules”文件夹下

于 2021-01-29T01:37:14.483 回答