node.js - 使用 heroku 部署小型 nodejs 应用程序时出错
问题描述
我有一个 API 服务器,我想每分钟更新一次数据库,所以我创建了一个小脚本(另一个项目),所以他每分钟都会向我的主服务器发送一个请求,我做了一个路由来处理请求
const request = require("request");
setInterval( async()=> {
request({
url :"https://serverdomainname/route",
json:true
},(err,res,body)=>{
console.log("sent")
})}, 60000);
我打字时正在开发中
节点应用程序一切正常,但是当我在 Heroku 中部署时,它在第一秒内就可以正常工作,但随后出现此错误
{
2021-10-23T16:09:52.503866+00:00 app[web.1]: > updateserver@1.0.0 start /app
2021-10-23T16:09:52.503866+00:00 app[web.1]: > node app.js
2021-10-23T16:09:52.503867+00:00 app[web.1]:
2021-10-23T16:10:51.663197+00:00 heroku[web.1]: Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch
2021-10-23T16:10:51.709745+00:00 heroku[web.1]: Stopping process with SIGKILL
2021-10-23T16:10:51.846193+00:00 heroku[web.1]: Process exited with status 137
2021-10-23T16:10:51.926528+00:00 heroku[web.1]: State changed from starting to crashed
}
那些来自 Heroku 服务器的服务器日志
有解决方案还是我可以从主服务器上解决?
解决方案
Heroku 希望在端口上运行您的应用程序,您可以分配端口,甚至不需要像
const request = require("request");
setInterval( async()=> {
request({
url :"https://serverdomainname/route",
json:true
},(err,res,body)=>{
console.log("sent")
})}, 60000);
// to run on Heroku
require('http').createServer((req, res) => res.end()).listen(process.env.PORT || 3000);
推荐阅读
- flutter - 如何输入下拉列表,或者是否可以使用来自其他类文件的映射在列表视图构建器中输入下拉列表?
- node.js - stripe.confirmCardPayment 不是函数
- java - 我的大整数计算器没有按计划工作,任何 Java 开发人员都可以帮助我吗?
- file - Flutter Emulator - 为什么 Sqflite 创建 x.db-journal 文件而不是删除它们?
- json - 如何在 TSV 中打印 JSON 文本以及其他内容?
- python - 无法从一些杂乱的 html 元素中分离出两个字段
- spring - 使用 lombok 找不到日志文件
- django - ModelForm 在使用模型表单时没有指定模型类
- reactjs - 当使用 JEST/ENZYME 单击按钮时,我如何测试函数是否被调用
- python - 从 GoogleClassroomApi [403] Python 中检索 ClassWork