【发布时间】: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 没有全局安装(我使用的其他模块也没有)
-
有点奇怪,是的。我已经帮不上忙了。我投了赞成票。让我们看看其他人是否能找到发生了什么。
标签: node.js npm node-modules