Node.js 错误:找不到模块快递
Posted
技术标签:
【中文标题】Node.js 错误:找不到模块快递【英文标题】:Node.js Error: Cannot find module express 【发布时间】:2013-06-14 06:42:59 【问题描述】:我编写了我的第一个 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
的情况下安装它?)
【问题讨论】:
NodeJS - Unable to import global modules的可能重复 NodeJS - How to resolve "Cannot find module" error的可能重复 node.js, Error: Cannot find module 'express'的可能重复 【参考方案1】:1.首先检查 express 是否安装在正确的位置。 2. npm install express(运行此命令)。 3. express 会保存在你的“node_modules”文件夹下
【讨论】:
【参考方案2】:按照本书中的示例,我遇到了同样的错误:“Kubernetes Up & Running”。
我看到许多建议“手动”安装 express 的答案,但我不相信这是最好的解决方案。
因为我们使用的是 package.json(我可以在日志中看到它)并且构建应用程序的正确方法是运行 npm install
,所以我添加了 express 依赖项package.json 文件。
"dependencies":
"express": "^4.17.1"
我使用npm search express
获取当前版本。
【讨论】:
【参考方案3】:全局安装 express 不适用于本地项目,所以需要在本地安装才能使用。
npm install express
希望这会奏效
谢谢
【讨论】:
【参考方案4】:我并不为分享这个而感到自豪,但就我而言,我有:
require('express.handlebars')
//and the correct form is:
require('express-handlebars'); //Use dash instead.
【讨论】:
【参考方案5】:我在 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"
]
【讨论】:
【参考方案6】:鉴于您已经在系统上安装了 node,请使用以下 Windows 为您的项目在本地安装 Express:
npm install express
或
npm install express --save
您可以通过以下方式授予它全局访问权限:
npm install -g express --save
【讨论】:
【参考方案7】:转到您的应用程序目录并使用以下命令安装 express 模块 npm install express --save 然后使用以下命令列出所有安装模块 npm ls 您将看到所有本地安装的模块。
【讨论】:
【参考方案8】: sudo brew 卸载节点 酿造更新 酿造升级 酿造清理 brew 安装节点 sudo chown -R $(whoami) /usr/local brew 链接--覆盖节点 sudo brew postinstall 节点这在 MacOS X Sierra
上对我有用【讨论】:
【参考方案9】:我遇到了同样的问题。我已经在 /usr/local/bin/ 全局安装了 express。当我执行“npm install”时,没有在本地目录的 node_modules 中创建 express。
-
检查您的 $HOME 中是否有文件名 .npmrc
如果有'global = true',则改为'global = false'
现在在应用程序目录中执行“npm install”。更有可能的是,您应该将所有依赖包的模块安装在应用程序目录中的 node_modules(本地)中。
【讨论】:
【参考方案10】:Golo 已经很好地解释了解决方案,但我可能会补充说明: 有时节点模块安装在
/usr/local/lib/node_modules
当你启动节点时,blabla.js 模块会在
中搜索/lib
所以一个解决方案是创建一个符号链接:
sudo ln -s /usr/local/lib/node_modules/ /lib/node_modules
【讨论】:
更简单的方法 -> npm 链接在基于 Ubuntu 的操作系统上,您可以尝试
sudo apt-get install node-express
它在 Mint 上为我工作
【讨论】:
【参考方案12】:对我来说,当使用 --save 选项在本地安装 express 时,它可以工作,如下所示:
$ npm install express --save
【讨论】:
【参考方案13】:在您的情况下,您的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 电脑上对我有用。重新启动您的节点服务器并再次运行命令节点C:\ChatServer\Server>node server.js
。它现在应该可以工作了!!!!
【讨论】:
也在 Windows 10 上工作过!【参考方案14】:在您的硬盘中创建一个文件夹,例如 sample1 并转到命令提示符键入 :cd 并给出 sample1 文件夹的路径,然后安装所有模块...
npm install express
npm 安装玉
npm install socket.io
然后将您正在创建的应用程序保存在 sample1 文件夹中
试试看……
【讨论】:
【参考方案15】:检查你是否没有安装express
模块,使用这个命令:
npm install express
如果您的node_modules
目录位于其他位置,请设置NODE_PATH
环境变量:
set NODE_PATH=your\directory\to\node_modules;%NODE_PATH%
【讨论】:
在windows 10下npm install express后无法自动添加到节点路径,需要手动添加节点模块。【参考方案16】:您需要在本地将 Express 安装到应用程序的上下文中(node_modules
文件夹):
$ npm install express
这样做的原因是应用程序总是在其本地上下文中查找任何依赖项。全局安装仅用于设置系统范围内可用的二进制文件,例如单元测试运行程序或引导程序或类似的东西。
使用 Express,当您在全局范围内安装它时,您会获得一个可以为您引导应用程序的 express
二进制文件。如需更多信息,请键入
$ express --help
所以,回答你的最后一个问题:是的,你需要在没有-g
的情况下安装它。
【讨论】:
这对我也有帮助。我在全球范围内安装了winston
,它在以普通用户身份启动我的应用程序时出于某种原因工作,但在启动我的应用程序和系统初始化脚本时它不起作用。我通过在应用程序目录中本地安装winston(并将其添加到package.json)来修复它。
您可以通过 cd 将全局安装的依赖项链接到您的项目根目录,然后使用“npm link 以上是关于Node.js 错误:找不到模块快递的主要内容,如果未能解决你的问题,请参考以下文章
node.js 错误:找不到模块“lodash.assign”