2020-07-21T06:54:58030920+00:0 heroku[路由器]:
at=error code=H12
> desc="Request timeout"
method=GET path="/Recipies";
host=desolate-beach-26163.herokuapp.comrequest_id=25f963a1-ce9e-43c6-a054-72c8a7a33ea8 fwd=";157.36.134.120";dyno=web.1连接=1ms服务=30001ms状态=503字节=0protocol=https
enter code here
H12"请求超时";在Heroku是由长期运行的行为引起的。
Heroku文档(此处(表明,在H12超时错误发生之前,服务器有30秒的响应时间没有任何配置或参数可以增加此值。只有的扩展方式是服务器或客户端发送一些数据以触发55秒的扩展。每次发送数据时,您都有55秒的时间发送更多数据(即,这是一个滚动窗口(。浏览器可能有一天能够使用ReadableStreams作为一种黑客手段来保持其活力,但到2022年,你最好的选择可能是服务器端。如果您正在发送JSON,一种破解方法是在服务器端添加中间件,每隔几秒钟发送一次空白,以避免断开连接(示例(。
数据库常见原因
我不确定您是否使用此路由从数据库中提取数据,但在连接到heroku上node.js的数据源时,H12错误是一个常见问题。
首先,检查数据库连接字符串,以确保配置没有受到影响。在你的应用程序(server.js(开始时,你可以注销数据库URL:
console.log("Database_URL", process.env.DATABASE_URL);
在到达路线后(在您的情况下,为"/Recipies"(,检查项目目录中的日志:
heroku logs --tail
你的连接字符串应该看起来像:
postgres://qi34l...545b4@ec2-3-63-192-23.compute-1.amazonaws.com:5432/aj48e4ewfjow34
如果没有,请检查您的package.json、Procfile和index.js文件中是否有可能覆盖DATABASE_URL的内容。
您可以通过";psql";命令行工具和您的url。它看起来像这样(但用你的连接字符串替换URL(-
psql postgres://qi34l...545b4@ec2-3-63-192-23.compute-1.amazonaws.com:5432/aj48e4ewfjow34
如果可以连接,那么postgresql库的初始化方式可能会出现问题。如果您正在使用最新的";节点postgres";("pg"(,请确保您已将ssl rejectUnauthorized设置为false:
const { Pool } = require('pg');
const pool = new Pool({
connectionString: process.env.DATABASE_URL,
ssl: { rejectUnauthorized: false }
});