Heroku:端口上已经有东西在运行

时间:2018-06-24 20:52:19

标签: javascript heroku

我是Heroku的新手,正在尝试部署节点服务器和create-react-app前端应用程序。一切在本地运行都很好,但是当我尝试在Heroku上运行时,一切都扑灭了。我没有部署错误,并且在我的URL上仅看到vector::reserve(size_type n)

我的日志说:

Cannot GET /

/server/app.js

Something is already running on port 12345

package.json

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);

4 个答案:

答案 0 :(得分:1)

“为什么端口12345而不是3005来了?”

因为HEROKU动态分配端口。

答案 1 :(得分:0)

尝试

const port = process.env.PORT || 5000

这适用于我的应用程序。

尝试从Heroku中配置getting stated app这样的应用

scriptspackage.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'));
  });
}