Node.js CouchDB 和 Nano 'error happened in your connection'
Node.js CouchDB and Nano 'error happened in your connection'
我已经四处寻找了 2 个多小时,现在我试图找到一些可以给我任何方向的东西来解决这个问题,但就是找不到。
我正在使用 Node.js 和带有 docker-compose 的 CouchDB。我也在使用 express 和 nano。我已经将我的 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
由于 CouchDB 运行 在它自己的容器中而不是在本地主机上,因此您的连接字符串需要指向另一个容器而不是 127.0.0.1(本地主机)。
由于您将 CouchDB 服务称为“couchdb1”,因此连接字符串应该改为;
admin:admin@couchdb1:5984
我已经四处寻找了 2 个多小时,现在我试图找到一些可以给我任何方向的东西来解决这个问题,但就是找不到。
我正在使用 Node.js 和带有 docker-compose 的 CouchDB。我也在使用 express 和 nano。我已经将我的 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
由于 CouchDB 运行 在它自己的容器中而不是在本地主机上,因此您的连接字符串需要指向另一个容器而不是 127.0.0.1(本地主机)。
由于您将 CouchDB 服务称为“couchdb1”,因此连接字符串应该改为;
admin:admin@couchdb1:5984