Estou tentando criar um aplicativo de pilha completa lendo o seguinte tutorial:
Eu segui todas as etapas e tentei executar:
node server.js
Mas eu recebi o seguinte erro:
Erro de conexão do MongoDB: MongoTimeoutError: a seleção do servidor expirou após 30000 ms em Timeout._onTimeout (C: \ RND \ fullstack_app \ backend \ node_modules \ mongodb \ lib \ core \ sdam \ server_selection.js: 308: 9) em listOnTimeout (internal / timers.js: 531: 17) em processTimers (internal / timers.js: 475: 7) {nome: 'MongoTimeoutError', motivo: Erro: conecte ETIMEDOUT 99.80.11.208:27017 em TCPConnectWrap.afterConnect [como oncomplete] (net. js: 1128: 14) {nome: 'MongoNetworkError', [Símbolo (mongoErrorContextSymbol)]: {}}, [Símbolo (mongoErrorContextSymbol)]: {}} (nó: 42892) UnhandledPromiseRejectionWarning: MongoTimeoutError: seleção da hora do servidor em Timeout._onTimeout (C: \ RND \ fullstack_app \ back-end \ node_modules \ mongodb \ lib \ core \ sdam \ server_selection.js: 308:9) em listOnTimeout (internal / timers.js: 531: 17) em processTimers (internal / timers.js: 475: 7)
Meu código no server.js é o seguinte:
const mongoose = require('mongoose');
const router = express.Router();
// this is our MongoDB database
const dbRoute =
'mongodb+srv://user:<password>@cluster0-3zrv8.mongodb.net/test?retryWrites=true&w=majority';
mongoose.Promise = global.Promise;
// connects our back end code with the database
mongoose.connect(dbRoute,
{ useNewUrlParser: true,
useUnifiedTopology: true
});
let db = mongoose.connection;
db.once('open', () => console.log('connected to the database'));
Alguma sugestão?
fonte
user:password
para suausername and password
string de conexão?Respostas:
basta ir ao painel de administração do mongodb atlas. Vá na guia Segurança> Acesso à rede> Em seguida, adicione seu IP à lista branca adicionando
Veja esta imagem para localizar o menu específico
Nota: verifique seu IP no google e adicione-o
fonte
Verifique se os "<" e ">" foram removidos ao substituir os campos de usuário e senha. Isso funcionou para mim
fonte
Às vezes, esse erro ocorre devido ao endereço IP concedido ao nosso banco de dados.
Lembre-se, seu aplicativo pode estar funcionando bem e, em seguida, apresentar esse erro. Sempre que isso acontece, na maioria das vezes seus endereços IP são alterados, o que não está na lista de permissões permitida.
Tudo o que você precisa fazer é atualizar a lista de permissões com seus endereços IP atuais
fonte
Lista branca seu endereço IP de conexão. O Atlas permite apenas conexões de clientes com o cluster a partir de entradas na lista de permissões do projeto. A lista de permissões do projeto é diferente da lista de permissões da API, que restringe o acesso da API a endereços IP ou CIDR específicos.
NOTA
Você pode pular esta etapa se o Atlas indicar na etapa Setup Connection Security que você já configurou uma entrada da lista de permissões no seu cluster. Para gerenciar a lista de permissões de IP, consulte Adicionar entradas à lista de permissões.
Se a lista de permissões estiver vazia, o Atlas solicitará que você adicione um endereço IP à lista de permissões do projeto. Você também pode:
Clique em Adicionar seu endereço IP atual para colocar na lista branca seu endereço IP atual.
Clique em Adicionar um endereço IP diferente para adicionar um único endereço IP ou um intervalo de endereços anotado pelo CIDR.
Para clusters Atlas implantados no Amazon Web Services (AWS) e usando o VPC Peering, você pode adicionar um Grupo de Segurança associado ao VPC do mesmo nível.
Você pode fornecer uma descrição opcional para o endereço IP ou o intervalo CIDR recém-adicionados. Clique em Adicionar endereço IP para adicionar o endereço à lista de permissões.
fonte
Você pode remover o sinalizador {useUnifiedTopology: true} e reinstalar a dependência do mangusto! funcionou para mim.
fonte
Eu recebi o mesmo erro. Estas são as etapas que segui para resolvê-lo
Após essas etapas, funcionou como de costume. Espero que isso ajude vocês.
fonte
Podes tentar:
fonte
node 3.00 or later
e copiou `` mongodb + srv: // usuário: <senha> @ cluster0-3zrv8.mongodb.net / test? RetryWrites = true & w = maioria ''? Lá você tem três opções para escolher, escolha o nó do meioeu estava com esse problema, para mim a solução foi verificar se meu ip está configurado corretamente e antes de confirmar nesta tela
insira a descrição da imagem aqui
fonte
Por favor, Verifique a sua senha, configuração de usuário ou IP . Principalmente "A seleção do servidor atingiu o tempo limite após 30000 ms em Timeout._onTimeout" ocorre sempre que os itens acima não coincidem com a configuração do servidor.
fonte
Eu sou capaz de resolver o problema. Tudo estava bem, mas o firewall estava bloqueando o acesso à porta 27017. A conectividade pode ser testada em http://portquiz.net:27017/ ou usando telnet para o terminal que pode ser recuperado em clusters-> Métricas.
Obrigado a todos pelas sugestões
fonte
Tente criar um novo usuário no acesso ao banco de dados com o método de autenticação padrão, que é "SCRAM". Em seguida, faça um novo cluster para isso. Funcionou para mim! Meu arquivo server.js
fonte
Qual é a sua versão do mangusto? porque há um problema com uma certa versão do mangusto. Por favor, visite este link para obter mais detalhes " https://github.com/Automattic/mongoose/issues/8180 ". Enfim, eu estava enfrentando o mesmo problema, mas depois de usar uma versão mais antiga (5.5.2), funcionou para mim. Por favor, tente e deixe-me saber o que aconteceu.
fonte
Pode ser basicamente por causa de uma atualização npm. Acabei de atualizar para a npm v 6.13.7. e comecei a receber esse erro.
Seguindo as instruções do @Matheus, comentei a linha "{useUnifiedTopology: true}" e consegui passar por isso.
Atualizei o mangusto e tudo funciona bem.
fonte
Você está usando algum antivírus, firewall, VPN ou em uma rede restrita (por exemplo, conexão comercial / Wi-Fi / LAN)? Em seguida, tente desligá-lo / reconectar-se a uma rede diferente. Alguns IPs / conexões podem ser bloqueados pelo administrador de uma rede que você está usando ou simplesmente antivírus podem ter políticas de firewall. Mesmo que você tenha
0.0.0.0
noIP Address
Atlas do MongoDB.fonte
Eu tive o mesmo problema. Eu poderia conectar-me a partir do MongoDB Compass ou do meu aplicativo Node usando as cadeias de conexão que a Atlas me deu. Eu o resolvi adicionando meu endereço IP à lista de permissões no Atlas.
fonte
Para quem ainda está lutando com esse problema. Resolvi esse problema definindo todos os parâmetros como nome de usuário, senha e dbName nas próprias opções de mangusto.
Anteriormente, o código era assim. (Quando eu estava recebendo o erro).
Observe que o URL no mongo connect.
mongodb://${dbAddress}:${dbPort}/${dbName}
.Novo código sem erro.
Observe as opções e o URL.
Este é o meu ambiente local. Não produção env.
Espero que seja útil.
fonte
tente especificar o driver do nó, versão 2,2,12 no cluster -> conectar -> conectar seu aplicativo. nova string deve estar com mongodb: //. use essa string para conectar-se. não esqueça de digitar uma senha
fonte