在Heroku中部署MERN(MongoDB, Express, React, Node.js)堆栈应用程序时可能会遇到多种问题。以下是一些常见问题及其解决方案:
package.json
文件中的依赖项版本不兼容或网络问题导致无法下载依赖。config vars
中的MongoDB URI是否正确,并确保MongoDB服务正在运行。server.js
中正确设置了静态文件目录,例如:server.js
中正确设置了静态文件目录,例如:heroku config:set
命令。server.js
中使用process.env.PORT
来设置端口,例如:server.js
中使用process.env.PORT
来设置端口,例如:server.js
const express = require('express');
const mongoose = require('mongoose');
const path = require('path');
const app = express();
const PORT = process.env.PORT || 5000;
// 连接MongoDB
mongoose.connect(process.env.MONGODB_URI, {
useNewUrlParser: true,
useUnifiedTopology: true,
}).then(() => console.log('MongoDB connected'))
.catch(err => console.log(err));
// 设置静态文件目录
app.use(express.static(path.join(__dirname, 'client/build')));
// API路由
app.use('/api', require('./routes/api'));
// 所有其他请求重定向到React应用
app.get('*', (req, res) => {
res.sendFile(path.join(__dirname+'/client/build/index.html'));
});
app.listen(PORT, () => {
console.log(`Server is running on port ${PORT}`);
});
package.json
{
"name": "mern-stack-app",
"version": "1.0.0",
"scripts": {
"start": "node server.js",
"build": "cd client && npm run build",
"heroku-postbuild": "npm run build"
},
"dependencies": {
"express": "^4.17.1",
"mongoose": "^5.12.3",
"react": "^17.0.2",
"react-dom": "^17.0.2",
"react-scripts": "4.0.3"
}
}
通过以上步骤和配置,你应该能够在Heroku上成功部署MERN堆栈应用程序。如果仍然遇到问题,建议查看Heroku日志以获取更多详细信息:
heroku logs --tail
希望这些信息对你有所帮助!
领取专属 10元无门槛券
手把手带您无忧上云