Js 错误: 无法找到模块 Express

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

401519 次浏览

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

$ npm install express

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

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

$ express --help

因此,为了回答最后一个问题: 是的,您需要在没有 -g的情况下安装它。

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

/usr/local/lib/node_modules

当您启动节点 blabla.js 模块时,会搜索

/lib

因此,解决方案是创建一个符号链接:

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

检查是否没有安装 express模块,使用以下命令:

 npm install express

如果您的 node_modules目录位于另一个位置,则设置 NODE_PATH环境变量:

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

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

安装快递

安装翡翠

Npm install socket.io 安装套接字

然后,不管您正在创建什么应用程序,都要保存在 sample1文件夹中

试试..。

在您的情况下,您的 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 _ module”的文件夹,那么首先创建该文件夹并将这些文件粘贴到该文件夹中。这个方法在我的 windows 电脑上很管用。重新启动节点服务器并再次运行命令节点 C:\ChatServer\Server>node server.js。现在应该可以了! ! !

对于我来说,如果使用—— save 选项在本地安装 Express,那么它就可以工作:

$ npm install express --save

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

sudo apt-get install node-express

在 Mint 上对我很有用

如果您已经在系统上安装了 节点,请使用以下 Windows 操作系统在本地为项目安装 Express:

npm install express

或者

npm install express --save

您可以使用以下方法赋予它全局访问权限:

npm install -g express --save

我也遇到了同样的问题。我已经在/usr/local/bin/全球范围内安装了 Express。在执行“ npm install”时,未在本地目录的 node _ module 中创建 Express。

  1. 检查 $HOME 中是否有文件名.npmrc
  2. 如果它有‘ global = true’,改为‘ global = false’
  3. 现在在应用程序目录中执行“ npm install”。更有可能的是,您应该将所有依赖于包的模块安装在应用程序目录的 node _ module (local)中。
  • Sudo 酿造卸载节点
  • 啤酒更新
  • 啤酒升级
  • 啤酒清理
  • 酿造安装节点
  • Sudo chown-R $(whoami)/usr/local
  • 编译链接——覆盖节点
  • Sudo 酿造后安装节点

这招在 MacOS X Sierra上很管用

进入应用程序目录,使用下面的命令安装 Express 模块 Npm install Express —— save 然后使用以下命令列出所有安装模块 Npm 是 您将看到所有本地安装模块。

我在 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"
]
}

分享这些我并不感到骄傲,但就我的情况而言:

 require('express.handlebars')


//and the correct form is:
require('express-handlebars'); //Use dash instead.

我在这本书的例子中犯了同样的错误: “ Kubernetes Up & Running”。
我看到许多答案建议安装 快递“手工”,但我不相信是最好的解决方案。
因为我们使用的是 包裹 Json(我可以在日志中看到它) ,而构建应用程序的正确方法是运行 npm install,所以我在 包裹 Json文件中添加了 快递依赖项。

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

我得到了 npm search express的当前版本。

1. 首先检查 Express 是否安装在正确的位置。 Npm install Express (运行此命令)。 Express 将保存在“ node _ module”文件夹下