node.js - Ошибка: не удалось подключиться к серверу [localhost:27017] при первом подключении [MongoNetworkError: connect ECONNREFUSED 127.0.0.1:27017]
Я новичок в nodeJS и mongodb. Я узнал все эти вещи с YouTube. Я пытался создать API, используя node.js, но теперь я не могу даже подключиться к mongodb.
Проблема в том, что я использую проект Fn (узел времени выполнения) и пытался подключиться к mongodb, но это не сработало (проект Fn представляет собой серверную платформу с открытым исходным кодом и без сервера).
Это часть, которую я использую для подключения к mongodb:
var MongoClient = require('mongodb').MongoClient;
var url = 'mongodb://localhost:27017/MyDB';
MongoClient.connect(url,function(err, db) {
if(err) throw err;
console.log("Database is Connected!");
db.close();
});
//This is the part that Fn Project generated automatically
var fdk = require('@fnproject/fdk');
fdk.handle(function(input){
var name = 'World';
if (input.name) {
name = input.name;
}
response = {'message': 'Hello ' + name}
return response;
})
Поэтому я запускаю команду для запуска Fn Server
fn start
и я также запускаю команду для запуска mongodb
sudo mongod
После того, как все установлено, я запускаю команду для выполнения кода перед развертыванием.
sudo fn run
и вот результат, который я получил:
Building image nodefn:0.0.3 ...
(node:1) DeprecationWarning: current URL string parser is deprecated, and will be removed in a future version. To use the new parser, pass option { useNewUrlParser: true } to MongoClient.connect.
/function/node_modules/mongodb/lib/operations/mongo_client_ops.js:466
throw err;
^
Error: failed to connect to server [localhost:27017] on first connect [MongoNetworkError: connect ECONNREFUSED 127.0.0.1:27017]
at Pool.<anonymous> (/function/node_modules/mongodb-core/lib/topologies/server.js:564:11)
at emitOne (events.js:115:13)
at Pool.emit (events.js:210:7)
at Connection.<anonymous> (/function/node_modules/mongodb-core/lib/connection/pool.js:317:12)
at Object.onceWrapper (events.js:318:30)
at emitTwo (events.js:125:13)
at Connection.emit (events.js:213:7)
at Socket.<anonymous> (/function/node_modules/mongodb-core/lib/connection/connection.js:246:50)
at Object.onceWrapper (events.js:316:30)
at emitOne (events.js:115:13)
Моя версия докера - Docker версии 18.06.1-ce, а версия Ubuntu - Ubuntu 18.04.1 LTS.
Кроме того, это package.json и func.yaml
{
"name": "hellofn",
"version": "1.0.0",
"description": "backend",
"main": "func.js",
"author": "",
"license": "Apache-2.0",
"dependencies": {
"@fnproject/fdk": "0.x",
"mongodb": "^3.1.4"
}
}
-
//func.yaml
schema_version: 20180708
name: nodefn
version: 0.0.3
runtime: node
entrypoint: node func.js
format: json
triggers:
- name: nodefn-trigger
type: http
source: /nodefn-trigger
Я застрял на этой ошибке в течение недели, и я так потерян прямо сейчас.
1 ответ
Две вещи, которые вы должны изучить:
1) Проверьте, правильно ли установлен mongodb и работает ли он на вашем компьютере, пока вы создаете БД с помощью nodeJs, и помните, что если вы не создадите запись, вы не сможете создать БД в Монго, хотя она говорит, что БД создана!!
Проверьте эту ссылку о том, как установить mongo, если это необходимо: https://docs.mongodb.com/v3.0/tutorial/install-mongodb-on-os-x/
2) Проверьте, установлен ли модуль mongodb в каталоге вашего рабочего приложения (локально), так как вы импортируете с помощью require().
Если да, приведенный ниже код должен работать нормально - не нужно менять localhost на ваш ip, если только у вас нет проблем с подключением:
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/MyDB"; // mydatabase is the name of db
MongoClient.connect(url, function(err, db) {
if (err) throw err;
console.log("Database created!");
db.close();
});