无论我做什么,当我运行knex时,我总是得到这个错误。
"errno": "EAI_AGAIN",
"code": "EAI_AGAIN",
"syscall": "getaddrinfo",
"hostname": "knex",
"host": "knex",
"port": 3我连接到localhost,我确信我做的每件事都是正确的。当我最后一次打开这个项目时,这个设置确实起作用了。我甚至确认我使用的是正确的npm和node版本。
const knexConnection = knex({
client: 'pg',
connection: "postgres://user:password@localhost:5432/db-name",
})在dbeaver中输入用户名、密码等可以很好地工作。所以这不是本地psql服务器的问题,也不是密码之类的问题。再看一下knex文档,这似乎不是一个语法问题。
到底怎么回事?我该如何解决这个问题呢?
发布于 2020-04-28 16:22:40
从错误中可以看到,您正在尝试查找名为knex的主机名和DNS超时。检查你的线路。有些东西并不是按照你想象的方式配置的。
还要检查堆栈跟踪错误的确切来源。
发布于 2020-04-29 01:09:45
当Mikael说尝试连接的主机是"knex“而不是"localhost”时,我尝试将变量作为对象放入。
const knexConnection = knex({
client: 'pg',
connection: {host:host, user:user, password:password, database:database, port:port},
})在相同的价值观下,它是有效的。所以,我不确定为什么URL one不能工作。希望这只是个意外,不会发生在我实际的postgresql服务器上。
发布于 2020-04-29 01:16:23
在我看来,考虑到其他设置都是可以的,你的密码/用户可能包含一些特殊字符,它破坏了网址解析器,然后knex试图连接到一些不存在的网址。
您应该尝试使用其他用户,或者将用户密码更改为不含特殊字符的密码。您可以看到这个related question
这甚至可以解释为什么使用配置对象的连接可以工作,而不能使用URI。
https://stackoverflow.com/questions/61469458
复制相似问题