ECONNREFUSED(使用带有nano和couchdb的节点时)

ui7jx7zq  于 2022-12-09  发布在  CouchDB
关注(0)|答案(3)|浏览(197)

直到今天,我一直在成功地为我的应用程序使用nodejs + nano + couchdb。由于某种原因,当我试图运行我的应用程序时,突然出现了ECONNREFUSED。如果我试图使用Web浏览器或其他应用程序查询数据库(java应用程序)运行正常。我不确定为什么在这种情况下它停止工作。我已经研究了过去2天,可以'I don“我找不到任何帮助。我相信这可能与打开的连接太多有关,但这有点超出了我的知识范围。有人能为我提供有关调试此问题的任何见解或任何方向吗?我应该提到这个couchdb位于iristouch上

2ic8powd

2ic8powd1#

添加更多关于你正在使用的堆栈的信息。但基本上它的服务器机器不想允许连接。也可以尝试运行你的应用程序与DEBUG=*,nano将通过console.log记录几乎所有的事情。
例如,将package.json启动命令更改为node changetoyourapp.js DEBUG=*
我昨天遇到了同样的问题与nodejitsu/iristouch。问题消失后,一些重新启动。

y1aodyip

y1aodyip2#

检查您的节点版本与nano的预期节点版本。nano可能无法与节点〉16一起工作。

osh3o9ms

osh3o9ms3#

这是因为节点v18现在优先选择IPv6地址而不是IPv4地址(如果同一主机名存在两个IPv4地址)。
例如,如果您的/etc/hosts包含如下条目:

127.0.0.1          localhost
::1                localhost

节点v16会说“localhost”解析为127.0.0.1,而节点v18会说“localhost”解析为::1,即IPv6的等价物。由于CouchDB默认情况下不侦听IPv6端口,因此到::1的连接将被拒绝。
解决方案:
1.在URL中使用127.0.0.1而不是localhost
1.使用可明确解析为IPv4地址的域名,例如/etc/hosts文件中的127.0.0.1 my.pretend.host
1.恢复到在其DNS查找中首选IPv4地址的Nodev16。
1.通过更改couchdb.ini中的bind_address = ::1,使CouchDB绑定到IPv6地址。然后可以执行curl 'http://USER:PASS@[::1]:5984/
请参阅
https://github.com/apache/couchdb-nano/issues/313#issuecomment-1321760360

相关问题