我在heroku服务器上部署了nodejs代码。
我面临H12请求超时问题
这是与pgsql的db连接,它是异步的
const { Pool } = require("pg");
import nodeEnvFile = require("node-env-file");
import { Query } from "src/models/query";
nodeEnvFile(".env");
const config = {
user: process.env.DB_USER,
host: process.env.DB_IP,
database: process.env.DB,
password: process.env.DB_PASSWORD,
port: process.env.DB_PORT,
max: 5, // max number of connection can be open to database
idleTimeoutMillis: 30000, // how long a client is allowed to remain idle before being closed
ssl: true
};
const pool = new Pool(config);
export class DB {
static async query(queryInfo: Query): Promise<any> {
// to hold undefined values while stringfy json
const replacer = (_key, value) => typeof value === "undefined" ? null : value;
let _arguments = "()";
if (queryInfo.arguments) {
_arguments = `('${JSON.stringify(queryInfo.arguments, replacer)}'::json)`;
}
const query = `select * from ${queryInfo.name} ${_arguments} as info;`;
console.log(query);
try {
return pool.query(query)
.then((response) => {
console.log("response", response);
return response.rows[0].info;
})
.catch((err) => {
console.log("Db Error : ", err);
throw err;
});
} catch (err) {
console.log("err", err);
throw err;
}
}
}
这是我如何调用这个数据库
const _loginInfo: any = await AuthFacade.login(credentials);
以及立面功能
static async login(credentials: LoginCredentials): Promise<{ userId: number, token: string }> {
const query = new Query({
name: this.PROCS.LOGIN,
arguments: credentials
});
return DB.query(query);
}
同样的编码在本地工作,它也在heroku工作。但是突然间我得到了这个问题。有什么帮助吗?
pgsql连接有问题。我使用的是pg的第7版,我想这对HeroKu不起作用。所以我更新了pg的版本
"pg": "^8.5.1",
并更新了池配置
const Pool = require("pg-pool");
import nodeEnvFile = require("node-env-file");
import { Query } from "src/models/query";
nodeEnvFile(".env");
const config = {
user: process.env.DB_USER,
host: process.env.DB_IP,
database: process.env.DB,
password: process.env.DB_PASSWORD,
port: process.env.DB_PORT,
max: 5, // max number of connection can be open to database
idleTimeoutMillis: 30000, // how long a client is allowed to remain idle before being closed
ssl: { rejectUnauthorized: false }
};
const pool = new Pool(config);
export class DB {
static async query(queryInfo: Query): Promise<any> {
// to hold undefined values while stringfy json
const replacer = (_key, value) => typeof value === "undefined" ? null : value;
let _arguments = "()";
if (queryInfo.arguments) {
_arguments = `('${JSON.stringify(queryInfo.arguments, replacer)}'::json)`;
}
const query = `select * from ${queryInfo.name} ${_arguments} as info;`;
console.log(query);
try {
return pool.query(query)
.then((response) => {
return response.rows[0].info;
})
.catch((err) => {
console.log("Db Error : ", err);
throw err;
});
} catch (err) {
console.log("err", err);
throw err;
}
}
}
现在它正在工作
我有一个NodeJS应用程序,它使用服务器发送事件(SSE)路由将更新从服务器发送到客户端。在我的本地开发环境中,这非常有效,因为客户端始终保持与SSE路由的连接,并且在断开连接时尝试立即重新连接。 然而,一旦我将我的应用程序部署到Heroku,一切都出了问题。在没有通过SSE路由发送任何数据的几秒钟内,我在客户端收到一个503服务不可用的错误,客户端失去了与服务器的连接,因此无法接收任何实时更新
我们在Spring WebFlux中使用2.4.2中的Spring Boot。 我希望Spring Boot应用程序终止对应用程序的所有请求,这些请求需要超过3秒的处理时间。 有,但这似乎并不能解决问题。 有没有办法指定这样的服务器请求超时?
我有一个Spring Boot应用程序,我想实现的是,当我的Rest控制器需要更长的时间来处理请求时,只需发送错误而不继续处理请求。这可能吗?我如何以某种方式实现它,而无需在控制器级别进行修改,而是在应用程序级别进行修改。这是在最新的Spring启动
我正在寻求帮助,以解决这个基本方案无法正常工作的问题: 在运行在MacBook上的VirtualBox VM上安装了kubeadm的三个节点: Virtualbox VM有2个适配器:1)主机专用2)NAT。来自客户计算机的节点IP是: 我将它们公开为ClusterIP服务: 现在问题来了: 我ssh到kubernetes-node1并使用集群IP卷曲服务: 如果我ssh到kubernetes-n
在终端上,我得到了这个错误:$./asadmin start-domain domain1 找不到默认的域目录。此系统属性没有值:com.sun.aas.domainsroot命令启动-域失败。 在Eclipse上,我得到了这个运行时异常:在Felix平台上启动GlassFish 玻璃鱼4 拜托,你知道怎么解决这个问题吗?
问题内容: 我正在尝试允许javascript与Node.js服务器通信。 POST请求(Web浏览器) 现在,Node.js服务器代码如下所示。在用于GET请求之前。我不确定如何使其与POST请求一起使用。 服务器(Node.js) 在此先感谢您的帮助。 问题答案: 以下代码显示了如何从HTML表单读取值。正如@pimvdb所说,您需要使用request.on(’data’…)来捕获正文的内容。