1
resposta

Erro ao iniciar o servidor

Até o momento a API estava rodando corretamente, assim como o servidor retornava as respostas corretas no terminal, mas quando fiz uma pequena alteração de colocar um { mongo }, conforme a Juliana colocou na importação do mongoose dela dentro do dbConnect.js, simplesmente começou a gerar este erro.

erro de conexão MongooseError: The `uri` parameter to `openUri()` must be a string, got "undefined". Make sure the first parameter to `mongoose.connect()` or `mongoose.createConnection()` is a string.
    at _createMongoClient (C:\Users\Info\Desktop\ALURA\FORMAÇÕES\APIs com Node.js e Express\Node.js - criando uma API Rest com Express e MongoDB\node_modules\mongoose\lib\connection.js:804:11)
    at NativeConnection.openUri (C:\Users\Info\Desktop\ALURA\FORMAÇÕES\APIs com Node.js e Express\Node.js - criando uma API Rest com Express e MongoDB\node_modules\mongoose\lib\connection.js:741:29)
    at Mongoose.connect (C:\Users\Info\Desktop\ALURA\FORMAÇÕES\APIs com Node.js e Express\Node.js - criando uma API Rest com Express e MongoDB\node_modules\mongoose\lib\index.js:404:15)
    at conectaNaDatabase (file:///C:/Users/Info/Desktop/ALURA/FORMA%C3%87%C3%95ES/APIs%20com%20Node.js%20e%20Express/Node.js%20-%20criando%20uma%20API%20Rest%20com%20Express%20e%20MongoDB/src/config/dbConnect.js:4:12)
    at file:///C:/Users/Info/Desktop/ALURA/FORMA%C3%87%C3%95ES/APIs%20com%20Node.js%20e%20Express/Node.js%20-%20criando%20uma%20API%20Rest%20com%20Express%20e%20MongoDB/src/app.js:5:23
    at ModuleJob.run (node:internal/modules/esm/module_job:217:25)
    at async ModuleLoader.import (node:internal/modules/esm/loader:316:24)
    at async loadESM (node:internal/process/esm_loader:34:7)
    at async handleMainPromise (node:internal/modules/run_main:66:12)
Servidor escutando!
node:internal/process/promises:289
            triggerUncaughtException(err, true /* fromPromise */);
            ^

MongooseError: The `uri` parameter to `openUri()` must be a string, got "undefined". Make sure the first parameter to `mongoose.connect()` or `mongoose.createConnection()` is a string.
    at _createMongoClient (C:\Users\Info\Desktop\ALURA\FORMAÇÕES\APIs com Node.js e Express\Node.js - criando uma API Rest com Express e MongoDB\node_modules\mongoose\lib\connection.js:804:11)
    at NativeConnection.openUri (C:\Users\Info\Desktop\ALURA\FORMAÇÕES\APIs com Node.js e Express\Node.js - criando uma API Rest com Express e MongoDB\node_modules\mongoose\lib\connection.js:741:29)
    at Mongoose.connect (C:\Users\Info\Desktop\ALURA\FORMAÇÕES\APIs com Node.js e Express\Node.js - criando uma API Rest com Express e MongoDB\node_modules\mongoose\lib\index.js:404:15)
    at conectaNaDatabase (file:///C:/Users/Info/Desktop/ALURA/FORMA%C3%87%C3%95ES/APIs%20com%20Node.js%20e%20Express/Node.js%20-%20criando%20uma%20API%20Rest%20com%20Express%20e%20MongoDB/src/config/dbConnect.js:4:12)
    at file:///C:/Users/Info/Desktop/ALURA/FORMA%C3%87%C3%95ES/APIs%20com%20Node.js%20e%20Express/Node.js%20-%20criando%20uma%20API%20Rest%20com%20Express%20e%20MongoDB/src/app.js:5:23
    at ModuleJob.run (node:internal/modules/![Insira aqui a descrição dessa imagem para ajudar na acessibilidade](https://cdn1.gnarususercontent.com.br/1/1866432/d8ebcc5c-b313-482d-9861-ed27f510d721.png) esm/module_job:217:25)
    at async ModuleLoader.import (node:internal/modules/esm/loader:316:24)
    at async loadESM (node:internal/process/esm_loader:34:7)
    at async handleMainPromise (node:internal/modules/run_main:66:12)

Node.js v20.9.0

O que posso estar fazendo de errado?

Segue imagem do código para melhor compreensão: Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta

Oi, Jhuli! Tudo bem?

De acordo com a mensagem de erro o problema está ocorrendo pois há algum erro na forma como a string de conexão com o MongoDB está sendo passada para o método responsável pela conexão com o banco de dados em node_modules, pois o parâmetro uri está sendo recebido como undefined, o que sugere que a variável de ambiente DB_CONNECTION_STRING não está sendo corretamente definida ou acessada.

Dessa forma, para contornarmos o problema podemos:

  1. Verificar se possuímos um arquivo .env, escrito exatamente dessa forma, na raiz do projeto e se ele contém a variável DB_CONNECTION_STRING com a string de conexão correta para o banco de dados MongoDB.

  2. Para conseguirmos carregar as variáveis de ambiente, devemos verificar se o módulo dotenv está sendo utilizado no projeto, podemos fazer isso conferindo se no início do arquivo principal (server.js) temos o seguinte trecho de código:

    import "dotenv/config";
    

    Isso garante que as variáveis de ambiente definidas no arquivo .env sejam carregadas.

Após fazer as correções, devemos tentar reiniciar o servidor. Espero ter ajudado!

Um forte abraço e bons estudos!

Caso este post tenha te ajudado, por favor, marcar como solucionado ✓

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software