如何修复 Node JS 错误在 heroku 上找不到模块 'express'?
How to fix Node JS error cannot find module 'express' on heroku?
我有下面的节点 js 代码,它在本地运行得很好,但是当我将它部署到 heroku 时,我收到一条错误消息“错误:找不到模块 'express'
internal/modules/cjs/loader.js:968 抛出错误
const port = process.env.PORT || 5000;
const express = require('express');
require('dotenv').config();
const app = express();
app.set('view-engine','ejs');
app.use(express.urlencoded({extended:false}));
app.get('/',(req,res) => {
res.render('index.ejs');
});
app.listen(port, ()=>{console.log(`Listening on http://localhost:${port}`)});
package.json
{
"name": "mtNodeApp",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "node index.js",
"devStart": "nodemon index.js"
},
"author": "",
"license": "ISC",
"devDependencies": {
"bcrypt": "^5.0.0",
"body-parser": "^1.19.0",
"dotenv": "^8.2.0",
"ejs": "^3.1.3",
"express": "^4.17.1",
"mongoose": "^5.10.0",
"nodemon": "^2.0.4",
"request": "^2.88.2"
}
}
任何想法,我不确定我错过了什么?!
谢谢
Express 必须在 dependencies
而不是 devDependecies
:
{
...
"dependencies" {
"express": "^4.17.1",
...
}
"devDependecies": {
...
}
此外,可能其中大部分必须在 dependencies
中,以便服务器知道必须安装什么。基本上,它会忽略模块的安装,因为它们用于开发而非生产。
编辑:如果您想了解更多,可以阅读这个很棒的答案。
Whosebug answer
我有下面的节点 js 代码,它在本地运行得很好,但是当我将它部署到 heroku 时,我收到一条错误消息“错误:找不到模块 'express' internal/modules/cjs/loader.js:968 抛出错误
const port = process.env.PORT || 5000;
const express = require('express');
require('dotenv').config();
const app = express();
app.set('view-engine','ejs');
app.use(express.urlencoded({extended:false}));
app.get('/',(req,res) => {
res.render('index.ejs');
});
app.listen(port, ()=>{console.log(`Listening on http://localhost:${port}`)});
package.json
{
"name": "mtNodeApp",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "node index.js",
"devStart": "nodemon index.js"
},
"author": "",
"license": "ISC",
"devDependencies": {
"bcrypt": "^5.0.0",
"body-parser": "^1.19.0",
"dotenv": "^8.2.0",
"ejs": "^3.1.3",
"express": "^4.17.1",
"mongoose": "^5.10.0",
"nodemon": "^2.0.4",
"request": "^2.88.2"
}
}
任何想法,我不确定我错过了什么?!
谢谢
Express 必须在 dependencies
而不是 devDependecies
:
{
...
"dependencies" {
"express": "^4.17.1",
...
}
"devDependecies": {
...
}
此外,可能其中大部分必须在 dependencies
中,以便服务器知道必须安装什么。基本上,它会忽略模块的安装,因为它们用于开发而非生产。
编辑:如果您想了解更多,可以阅读这个很棒的答案。
Whosebug answer