Heroku 上的快速网关 - {$PORT} 绑定错误
express-gateway on Heroku - {$PORT} binding error
我已经在 Heroku 上部署了我的 express-gateway,在 gateway.config.yml
文件中以这种方式使用环境变量:
http:
port: ${PORT:-8080}
host: ${HOST:-localhost}
https:
port: ${PORT:-8080}
host: ${HOST:-localhost}
apiEndpoints:
....
无论如何,Heroku 一直报错:
[EG:gateway] gateway http server listening on :::8080
State changed from starting to crashed
Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch
我根据official documentation使用了符号${ENV_VAR_NAME:-DEFAULT}
。为什么 Heroku 尝试绑定 8080?
======更新
只是一个题外话的提示,对于谁将要使用 Heroku,这是我如何从环境变量中获取 redis url。
var redis_Url = process.env.REDIS_URL;
var groups = /^redis:\/\/(.*?)\:(.+?)\@(.+?)\:(.+)$/gi.exec(redis_Url);
var nm = groups[1];
var pasw = groups[2];
var host = groups[3];
var port = groups[4];
process.env.REDIS_NM = nm;
process.env.REDIS_PASW = pasw;
process.env.REDIS_HOST = host;
process.env.REDIS_PORT = port;
console.log('redis url --> '+process.env.REDIS_URL);
console.log('nm --> '+process.env.REDIS_NM);
console.log('pasw --> '+process.env.REDIS_PASW);
console.log('host --> '+process.env.REDIS_HOST);
console.log('port --> '+process.env.REDIS_PORT);
你不应该在同一个端口上同时监听 http 和 https 服务器,否则它会失败。
Heroku 提供了自己的路由器来为您处理 SSL 终止,因此您可以删除整个 https
部分。
我已经在 Heroku 上部署了我的 express-gateway,在 gateway.config.yml
文件中以这种方式使用环境变量:
http:
port: ${PORT:-8080}
host: ${HOST:-localhost}
https:
port: ${PORT:-8080}
host: ${HOST:-localhost}
apiEndpoints:
....
无论如何,Heroku 一直报错:
[EG:gateway] gateway http server listening on :::8080
State changed from starting to crashed
Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch
我根据official documentation使用了符号${ENV_VAR_NAME:-DEFAULT}
。为什么 Heroku 尝试绑定 8080?
======更新
只是一个题外话的提示,对于谁将要使用 Heroku,这是我如何从环境变量中获取 redis url。
var redis_Url = process.env.REDIS_URL;
var groups = /^redis:\/\/(.*?)\:(.+?)\@(.+?)\:(.+)$/gi.exec(redis_Url);
var nm = groups[1];
var pasw = groups[2];
var host = groups[3];
var port = groups[4];
process.env.REDIS_NM = nm;
process.env.REDIS_PASW = pasw;
process.env.REDIS_HOST = host;
process.env.REDIS_PORT = port;
console.log('redis url --> '+process.env.REDIS_URL);
console.log('nm --> '+process.env.REDIS_NM);
console.log('pasw --> '+process.env.REDIS_PASW);
console.log('host --> '+process.env.REDIS_HOST);
console.log('port --> '+process.env.REDIS_PORT);
你不应该在同一个端口上同时监听 http 和 https 服务器,否则它会失败。
Heroku 提供了自己的路由器来为您处理 SSL 终止,因此您可以删除整个 https
部分。