node.js - 无法在heroku中加载rest api的favicon.ico

标签 node.js heroku hapi.js

我使用 hapi 创建了一个 REST api,一切在本地工作正常。我尝试将其部署在 heroku 中,应用程序每次都会崩溃,当我检查控制台是否有错误时,它显示:

Failed to load resource: the server favicon.ico responded with a status of 503 (Service Unavailable)

我检查了如何处理这个问题,我发现很少有帖子说我需要添加一个端点来返回 /favicon.ico 的状态代码 204。我 为其创建了一条路由,如下所示:

server.route({
        method: 'GET',
        path: '/favicon.ico',
        handler: function (request, reply) {
            return reply(require('fs').createReadStream('../../favicon.ico')).code(200).type('image/x-icon');;
        }
})

它在本地工作正常,但在 Heroku 中我遇到了相同的 503 错误。 Heroku 日志如下所示:

2018-02-25T04:56:18.826225+00:00 app[web.1]: Server running at: http://localhost:16689
2018-02-25T04:57:16.324815+00:00 heroku[web.1]: Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch
2018-02-25T04:57:16.324815+00:00 heroku[web.1]: Stopping process with SIGKILL
2018-02-25T04:57:16.406578+00:00 heroku[web.1]: Process exited with
status 137
2018-02-25T04:57:16.418790+00:00 heroku[web.1]: State changed from starting to crashed
2018-02-25T06:57:16.527520+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=profileapi.herokuapp.com
request_id=16403e1b-9e90-42f0-94c9-801960806944 fwd="157.49.157.106" dyno= connect= service= status=503 bytes= protocol=https
2018-02-25T06:57:17.983629+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=profileapi.herokuapp.com request_id=67f40452-1a05-440f-962a-a045563a73af fwd="157.49.157.106" dyno= connect= service= status=503 bytes= protocol=https
2018-02-25T06:57:27.478816+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=profileapi.herokuapp.com request_id=df2d9323-aa9d-4cff-9ef8-3722efda8a2f fwd="157.49.157.106" dyno= connect= service= status=503 bytes= protocol=https
2018-02-25T06:57:28.922698+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=profileapi.herokuapp.com request_id=cc5088e6-fb7b-4c7b-8bcb-c2db8556dd8e fwd="157.49.157.106" dyno= connect= service= status=503 bytes= protocol=https

我检查了hapi-favicon ,模块用户指南文档为空。我检查了它用于 /favicon.ico 端点的方式,我跟着它仍然得到同样的错误。

任何人都可以有任何建议/方法来解决这个问题吗?

最佳答案

问题出在创建服务器时提供的主机地址,我将HOSTPORT添加到服务器连接,如下所示:

server.connection({
    host: (process.env.HOST || 'localhost'),
    port: (process.env.PORT || 1643)
});

Heroku 动态地将应用程序分配给端口和主机地址。我们必须使用(process.env.PORT || your_port)。类似地,它将动态分配主机地址。我从连接中删除了主机。解决该问题的最终连接如下:

server.connection({
    port: (process.env.PORT || 1643)
});

关于node.js - 无法在heroku中加载rest api的favicon.ico,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48971245/

相关文章:

ruby-on-rails - Rails 5.2 和 webpacker 3.4.3 : Assets not compiled when deployed to Heroku

python - 如何为 Python Heroku 项目安装内部需求?

node.js - 如果 IIS 客户端证书身份验证正常,则检查 nodeJS Express

node.js - Feathersjs Node 套接字客户端未连接

javascript - 将事件从一个事件发射器转发到另一个

javascript - 多种 Joi 验证类型

javascript - 如何在 Hapi.js 中封装请求生命周期事件?

javascript - 如何在node.js中向手机号码发送验证码? (类似于 nodemailer,但用于 SMS)

node.js - 在 NodeJS 中向外行用户隐藏 Web 服务

javascript - 使用 Hapijs 处理和发送大量数据