使用 Heroku 进行 Fastify

Fastify with Heroku

我有一个使用 Heroku 托管的简单 Fastify 服务器。但是,它似乎不起作用!但是,开发的时候好像没问题!我得到的错误是:Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch。我得到的完整错误:

这是我使用的代码:
server.js:

const fastify = require("fastify")();
const path = require("path");

fastify.register(require("fastify-static"), {
  root: path.join(__dirname, "/"),
});

fastify.get("/", function (req, reply) {
  reply.sendFile("index.html");
});

fastify.listen(process.env.PORT || 5000, (err) => {
  if (err) throw err;
  console.log(`server listening on ${fastify.server.address().port}`);
});

package.json:

{
"name": "test1",
  "version": "1.0.0",
  "description": "",
  "main": "server.js",
  "engines": {
    "node": "15.11.x"
  },
  "scripts": {
    "start": "node server.js",
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "fastify": "^3.14.0",
    "fastify-static": "^4.0.1"
  }
}

有时,网站甚至无法加载!
任何帮助是极大的赞赏 !
谢谢!

这是图书馆的问题。对于其他库(express、django 等),不需要指定地址。

https://github.com/fastify/fastify/issues/709

变化:

.listen(process.env.PORT) 

至:

.listen(process.env.PORT, '0.0.0.0')

当我将 nodemon 用作本地服务器并将 Heroku 用于生产时,以下对我有用:

await fastify.listen(process.env.PORT, process.env.HOST || '0.0.0.0');

并在 package.json

"dev": "PORT=${PORT:=3000} HOST=${HOST:=localhost} nodemon"