直到今天,我一直在成功地为我的应用程序使用nodejs + nano + couchdb。由于某种原因,当我试图运行我的应用程序时,突然出现了ECONNREFUSED。如果我试图使用Web浏览器或其他应用程序查询数据库(java应用程序)运行正常。我不确定为什么在这种情况下它停止工作。我已经研究了过去2天,可以'I don“我找不到任何帮助。我相信这可能与打开的连接太多有关,但这有点超出了我的知识范围。有人能为我提供有关调试此问题的任何见解或任何方向吗?我应该提到这个couchdb位于iristouch上
3条答案
按热度按时间2ic8powd1#
添加更多关于你正在使用的堆栈的信息。但基本上它的服务器机器不想允许连接。也可以尝试运行你的应用程序与DEBUG=*,nano将通过console.log记录几乎所有的事情。
例如,将
package.json
启动命令更改为node changetoyourapp.js DEBUG=*
我昨天遇到了同样的问题与nodejitsu/iristouch。问题消失后,一些重新启动。
y1aodyip2#
检查您的节点版本与nano的预期节点版本。nano可能无法与节点〉16一起工作。
osh3o9ms3#
这是因为节点v18现在优先选择IPv6地址而不是IPv4地址(如果同一主机名存在两个IPv4地址)。
例如,如果您的
/etc/hosts
包含如下条目:节点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