Node.js Knex连接问题?是啊

Node.js Knex连接问题?是啊,node.js,postgresql,express,knex.js,Node.js,Postgresql,Express,Knex.js,无论我做什么,我在运行knex时总是会遇到这个错误 "errno": "EAI_AGAIN", "code": "EAI_AGAIN", "syscall": "getaddrinfo", "hostname": "knex", "host": "knex", "port": 3 我已连接到localhost,我确信我做的一切都是正确的。当我上次打开这个项目时,这个精确的设置起了作用。我甚至确认我使用的是正确的npm和节点版本 const knexConnection = knex({

无论我做什么,我在运行knex时总是会遇到这个错误

"errno": "EAI_AGAIN",
"code": "EAI_AGAIN",
"syscall": "getaddrinfo",
"hostname": "knex",
"host": "knex",
"port": 3
我已连接到localhost,我确信我做的一切都是正确的。当我上次打开这个项目时,这个精确的设置起了作用。我甚至确认我使用的是正确的npm和节点版本

const knexConnection = knex({
    client: 'pg',
    connection: "postgres://user:password@localhost:5432/db-name",
})
将用户名、密码等放入dbeaver就可以了。因此,这不是本地psql服务器的问题,也不是密码之类的问题。再看看knex文档,这似乎不是一个语法问题


发生什么事了?如何修复此问题?

从错误中可以看出,您正在尝试查找名为
knex的主机名,并且DNS超时。检查你的接线。有些东西没有按您认为的方式配置


还要检查stacktrace错误的确切来源。

当Mikael说尝试连接的主机是“knex”而不是“localhost”时,我尝试将变量作为对象输入

const knexConnection = knex({
    client: 'pg',
    connection: {host:host, user:user, password:password, database:database, port:port},
})
在同样的价值观下,它起作用了。
所以,我不知道为什么URL一个不起作用。希望这只是个意外,我的实际postgresql server不会发生这种情况。

我的拙见是,如果其他设置都正常,您的密码/用户可能包含一些特殊字符,这些字符破坏了URL解析器,然后knex试图连接到某个不存在的URL

您应该尝试使用其他用户,或者将用户密码更改为没有特殊字符的密码。你可以看到这个


这甚至可以解释为什么您使用配置对象的连接可以正常工作,但URI不能正常工作。

这是尝试连接到PostgreSQL服务器时出现的DNS错误。我怎么会在localhost中出现DNS错误?明天stackoverflow允许我时会标记这是正确答案可能就是这样。由于重新启动linux,我只是更改了密码和本地psql服务器。无论如何,将其放入具有完全相同变量(从.env导入)的对象中解决了该问题。