尽管已安装模块,但 Node.js 找不到模块
Posted
技术标签:
【中文标题】尽管已安装模块,但 Node.js 找不到模块【英文标题】:Node.js cannot find module, despite module being installed 【发布时间】:2018-05-27 07:04:08 【问题描述】:我在本地将我的应用程序构建到 dist
文件夹中; package.json 也被复制过来
npm install --production
在 dist 文件夹中运行
dist
文件夹然后被压缩
Zip 上传到服务器,然后解压
尝试在服务器上运行应用程序导致Error: cannot find module <module_name>
除非我在解压后手动运行npm install <module_name>
,否则任何模块都会出现此错误
如果我从我的dist
文件夹运行它,一切正常,所以这不是预压缩部分的问题
解压后运行npm install --production
并不能解决任何问题(只是说所有模块都是最新的)
在服务器上删除node_modules
,然后运行npm install --production
使一切正常
在本地解压缩 zip 文件然后运行应用程序可以正常工作
我错过了什么/做错了什么?
编辑:package.json:
"name": "app-name",
"version": "0.0.1",
"scripts":
"start": "index.js"
,
"dependencies":
"body-parser": "^1.18.2",
"email-validator": "^1.1.1",
"express": "^4.16.2",
"express-jwt": "^5.3.0",
"express-jwt-permissions": "^1.0.0",
"firebase-admin": "^5.5.1",
"jsonwebtoken": "^8.1.0",
"mailgun-js": "^0.13.1",
"mysql2": "^1.5.0",
"password-hash-and-salt": "^0.1.4",
"randomstring": "^1.1.5",
"reflect-metadata": "^0.1.10",
"sequelize": "^4.22.6",
"sequelize-typescript": "^0.5.0"
,
"devDependencies":
"@types/express": "^4.0.39",
"@types/express-jwt": "0.0.38",
"@types/jsonwebtoken": "^7.2.4",
"@types/node": "^8.0.51",
"@types/sequelize": "^4.0.79",
"babel-core": "^6.26.0",
"del": "^3.0.0",
"gulp": "^3.9.1",
"gulp-babel": "^7.0.0",
"gulp-ssh": "^0.6.0",
"gulp-typescript": "^3.2.3",
"gulp-zip": "^4.0.0",
"merge-stream": "^1.0.1",
"typescript": "^2.6.1"
【问题讨论】:
当它说找不到模块时,它也说它正在寻找的路径。检查是否正在寻找正确的node_modules
路径。
错误中没有路径:Error: Cannot find module 'express' at Function.Module._resolveFilename (module.js:536:15) at Function.Module._load (module.js:466:25) at Module.require (module.js:579:17) at require (internal/module.js:11:18)...etc
(只有路径是试图加载 express 的文件的位置)
嗯,好的。你能检查一下express
在node_modules
文件夹中是否有node_modules
吗?也许你有一个全局安装,但不记得你是这样安装的。
也检查了,并且 express 没有全局安装(我使用的其他模块也没有)
有点奇怪,是的。我已经帮不上忙了。我投了赞成票。让我们看看其他人是否能找到发生了什么。
【参考方案1】:
使用 npm install --only=production 代替。按照这个article
希望这有帮助,我是 Node js 的新手,只是想提供帮助
【讨论】:
以上是关于尽管已安装模块,但 Node.js 找不到模块的主要内容,如果未能解决你的问题,请参考以下文章