Heroku 无法将端口号注入 process.env.PORT

Posted

技术标签:

【中文标题】Heroku 无法将端口号注入 process.env.PORT【英文标题】:Heroku failed to inject port number to process.env.PORT 【发布时间】:2019-07-16 02:59:45 【问题描述】:

我正在将我的服务器部署到 Heroku,但由于某种原因,网络显示它仍在向 localhost 发出请求,而不是动态地向 process.env.PORT 注入端口号

chrome console error message

这是我的服务器的设置。

require('dotenv').config();
const express = require("express");
const graphqlHTTP = require("express-graphql");
const schema = require('./schema/schema');
const mongoose = require('mongoose');
const cors = require('cors');
const bodyParser = require('body-parser');

mongoose.connect(process.env.mongodburi,  useNewUrlParser: true )

mongoose.connection.once('open', ()=>
  console.log('Connected to database');
);

const app = express();
app.use(cors());
app.use(express.static("public"));

app.use('/graphql', bodyParser.json(), graphqlHTTP(
  schema,
  graphiql: true
));

app.withCredentials = true;

app.use('/', (req, res) => res.send("Welcome to read my profile"));

const port = process.env.PORT;
app.listen(port, ()=>
  console.log(`Now listening requests on port:$port`);
)

【问题讨论】:

您需要在服务器启动前运行$ heroku config:set PORT=3333 @デビット,这行不通。您不能在 Heroku 上选择自己的端口。你必须使用他们给你的端口。 问题不在于服务器正在侦听的端口。这似乎是正确的。问题是您的客户请求的地址。请编辑您的问题并显示一些客户端代码,例如您从后端请求数据的地方。 【参考方案1】:

使用这个

app.listen(process.env.PORT || 3000, function()
    console.log("Express server listening on port %d in %s mode", this.address().port, app.settings.env);
);

或者像デビット提到的那样运行$ heroku config:set PORT=3333

【讨论】:

第一个选项没有帮助。问题不在于 server 正在监听的地址,而是 client 正在请求的地址。第二个选项不起作用。您不能在 Heroku 上选择自己的端口。你必须使用他们给你的端口。

以上是关于Heroku 无法将端口号注入 process.env.PORT的主要内容,如果未能解决你的问题,请参考以下文章

请问如何扫描指定IP地址的端口号

Xampp Mysql试图启动

端口号 8001 由 SYSTEM PID 4 使用

阿里云修改默认的ssh端口

Apache - AH00451

Tomcat的server.xml配置讲解