我是Heroku的新手,正在尝试部署节点服务器和create-react-app前端应用程序。一切在本地运行都很好,但是当我尝试在Heroku上运行时,一切都扑灭了。我没有部署错误,并且在我的URL上仅看到vector::reserve(size_type n)
。
我的日志说:
Cannot GET /
Something is already running on port 12345
var express = require('express');
var app = express();
require('dotenv').config();
var mongoose = require('mongoose');
var config = require('./config');
var apiController = require('./controllers/apiController');
var port = process.env.PORT || 3005;
app.use('/', express.static(__dirname + '/public'));
app.set('view engine', 'ejs');
mongoose.connect(config.getDbConnectionString());
apiController(app);
app.listen(port);
答案 0 :(得分:1)
“为什么端口12345而不是3005来了?”
因为HEROKU动态分配端口。
答案 1 :(得分:0)
尝试
const port = process.env.PORT || 5000
这适用于我的应用程序。
尝试从Heroku中配置getting stated app这样的应用
从scripts
和package.json
复制Procfile
。
答案 2 :(得分:0)
不确定您的react-ui启动脚本是什么样的,但是您可能需要先运行它,然后再启动服务器启动脚本。理想情况下,您只想为react-ui运行一个发行版本,然后在服务器脚本中提供该build ui包。
答案 3 :(得分:0)
这里已经解决了同样的问题:Strange Create-React-App Heroku Error - Cannot GET /
这是因为您没有从 Express 服务器提供 index.html 文件。
所以你必须复制到你的 server.js 文件中
if (process.env.NODE_ENV === 'production') {
// Exprees will serve up production assets
app.use(express.static('client/build'));
// Express serve up index.html file if it doesn't recognize route
const path = require('path');
app.get('*', (req, res) => {
res.sendFile(path.resolve(__dirname, 'client', 'build', 'index.html'));
});
}