【问题标题】:Node.js CouchDB and Nano 'error happened in your connection'Node.js CouchDB 和 Nano '连接中发生错误'
【发布时间】:2021-12-29 01:00:18
【问题描述】:

我已经四处寻找了 2 个多小时,现在试图找到可以为我提供解决此问题的任何方向的东西,但根本找不到。

我将 Node.js 和 CouchDB 与 docker-compose 一起使用。我也在使用快递和纳米。我已经将我的 server.js 文件剥离到几乎没有,并且仍然不断得到这个

错误:

/usr/src/app/node_modules/nano/lib/nano.js:137
        reject(new Error('error happened in your connection'))
                ^
 
Error: error happened in your connection
    at responseHandler (/usr/src/app/node_modules/nano/lib/nano.js:137:16)
    at /usr/src/app/node_modules/nano/lib/nano.js:427:13
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
 
Node.js v17.0.1

我已经尝试了大约 10 种不同的方式来布置 url,但无法获得任何关于它为什么不起作用的迹象。我试过使用 curl -X PUT admin:admin@127.0.0.1:5984/posts/"001" -d '{"name":"Conner"} ',它被插入时没有问题。

server.js

'use strict';

const express = require('express');
var nano = require('nano')('http://admin:admin@127.0.0.1:5984');
var posts = nano.use('posts');

const app = express();
const bodyParser = require("body-parser");

const cors =require('cors');
app.use(cors());

app.use(bodyParser.urlencoded({ 
    extended: true 
}));
 
const PORT = 8080;
const HOST = '0.0.0.0';


async function asyncCall() {
  const response = await posts.insert({_id: "001"}, 'rabbit')
  return response
}
asyncCall();

app.use('/', express.static('public'));
console.log('up and running');


app.listen(PORT,HOST);

Dockerfile

FROM node:latest

EXPOSE 8080

WORKDIR /usr/src/app

RUN npm install express --save
RUN npm install nano --save
RUN npm install cors --save
RUN npm install -g loadtest --save

COPY server.js /usr/src/app/server.js
COPY /public /usr/src/app/public

CMD ["node", "server.js"]

docker-compose.yml

version: '3'
services:

 node1: 
  build: ./s1
  depends_on:
   - couchdb1
  container_name: s1a4
  ports:
   - "81:8080"

 couchdb1:
  image: couchdb:3.2.0
  container_name:  cdb1
  ports:
    - "5984:5984"
  environment:
    COUCHDB_USER: admin
    COUCHDB_PASSWORD: admin

【问题讨论】:

  • 您的工作 curl 使用端口 5984 而您的代码使用端口 5986,这不是很好...?
  • @JoachimIsaksson 我的错,我只是在测试一些东西。这并没有改变任何事情,当我在 5986 和 5984 遇到它时,错误仍然存​​在..
  • 主机名也可能不是 127.0.0.1 (localhost) 才能与另一个容器通信,所以admin:admin@couchdb1:5984 可能会更好。 (或者可能 cdb1 是您应该使用的主机名,还没有喝过咖啡)
  • @JoachimIsaksson 天哪,你是国王。这样可行。太感谢了。你想把它写成答案,以便我为你接受吗?

标签: javascript node.js docker couchdb couchdb-nano


【解决方案1】:

由于 CouchDB 在其自己的容器中而不是在本地主机上运行,​​因此您的连接字符串需要指向另一个容器而不是 127.0.0.1 (localhost)。

由于您将 CouchDB 服务称为“couchdb1”,因此连接字符串应改为;

admin:admin@couchdb1:5984 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-06
    • 2013-05-07
    • 1970-01-01
    相关资源
    最近更新 更多