我第一次尝试将Express/React/Mongo应用程序部署到Heroku。
它因503错误而失败。日志说明如下:
错误R10(启动超时)->Web进程无法绑定到内的$PORT
发射60秒
我在root index.js文件中设置了以下端口变量:
const port = process.env.PORT || 3000;
app.listen(port, function(){
console.log("Express server is running on port " + port)
})
它输出“Express server正在端口3000上运行”,这表明它没有拾取环境变量。
我一直在尝试按照这里的说明进行操作:
https://coursework.vschool.io/deploying-mern-with-heroku/
我所理解的关键部分可能是误解:
有了Heroku,您需要在新服务器上设置环境变量
创建Heroku应用程序,以便在项目启动时知道要使用哪些值
部署。你可以通过两种方式实现这一点,要么在Heroku的网站上在线,
或者使用heroku CLI通过命令行。既然我们不是
创建新的Heroku远程存储库,所有环境变量
需要使用Heroku.com添加。
我认为这意味着我应该设置一个环境变量Heroku.com,我相信我已经这样做了:
编辑:我已尝试从Heroku CLI设置process.env.PORT=8000:
heroku config:set process.env.PORT=8000
但会出现以下错误:
const express = require('express'),
cors = require('cors'),
app = express(),
port = process.env.PORT || 3000;
bodyParser = require('body-parser'),
todoRoutes = require('./routes/todo'),
path = require("path");
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: true}));
app.use(cors());
app.use(express.static(path.join(__dirname, "client", "build")))
app.get('/', function (req, res){
res.send('Root route')
})
app.use('/api/todos', todoRoutes);
app.get("*", (req, res) => {
res.sendFile(path.join(__dirname, "client", "build", "index.html"));
});
app.listen(port, function(){
console.log("Express server is running on port " + port)
})