docker-compose部署时Node.js容器访问CouchDB报url无效的ERR_ASSERTION错误
问题根因
你调用nano库传入的连接URL不符合要求:CouchDB的连接地址必须携带http://或https://协议前缀,你当前拼接的URL缺少协议头,直接以用户名密码开头,触发了nano内置的URL合法性校验断言报错。
修复方案
修改index.js中的URL拼接逻辑,在最前面补充http://前缀:
// 修改前 const db_url = `${admin_name}:${admin_pwd}@${db_host}:${db_port}/${db_name}` // 修改后 const db_url = `http://${admin_name}:${admin_pwd}@${db_host}:${db_port}/${db_name}`
额外检查项
- 确认你使用的
couchdbinit:latest镜像已经预先创建了logs数据库,否则连接后插入数据会触发库不存在的404错误,你也可以调整初始化逻辑先检查并创建库再操作:const nano = require('nano')(`http://${admin_name}:${admin_pwd}@${db_host}:${db_port}`) const users = await nano.db.create(db_name).catch(() => nano.use(db_name)) - 注意docker-compose中
api服务同时配置了env_file和environment字段,同配置项的优先级为environment>env_file,你当前配置无同名冲突可正常运行,后续调整配置时注意该规则即可。
内容的提问来源于stack exchange,提问作者shaparder
相关产品推荐
相关产品推荐

