Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

397
Vistas
Declaraciones de TypeScript para variables de entorno que no se reconocen

Estoy tratando de conectarme a MongoDB cuando inicio mi servidor node.js. Mi servidor está en src/server.ts , connectDB() está en src/config/db.ts y mi .env , y environment.d.ts están en el directorio raíz. Sin embargo, cuando intento conectarme a la base de datos, todavía dice que mi MONGO_URI , declarado en .env , es de tipo string | undefined

environment.d.ts :

 declare namespace NodeJS { export interface ProcessEnv { PORT?: string; NODE_ENV: 'development' | 'production'; MONGO_URI: string; } }

src/server :

 import dotenv from 'dotenv'; import express from 'express'; import connectDB from './config/db'; dotenv.config({ path: '../.env' }); connectDB(); const app = express(); .....

src/config/db.ts :

 import mongoose from 'mongoose'; const connectDB = async () => { try { const conn = await mongoose.connect(process.env.MONGO_URI, { useUnifiedTopology: true, useNewUrlParser: true, useCreateIndex: true, }); console.log(`MongoDB connected: ${conn.connection.host}`); } catch (error) { console.error(`ERROR: ${error.message}`); process.exit(1); } }; export default connectDB;

Código de error completo:

 TSError: ⨯ Unable to compile TypeScript: src/config/db.ts:5:41 - error TS2769: No overload matches this call. Overload 1 of 3, '(uri: string, callback: (err: CallbackError) => void): void', gave the following error. Argument of type 'string | undefined' is not assignable to parameter of type 'string'. Type 'undefined' is not assignable to type 'string'. Overload 2 of 3, '(uri: string, options?: ConnectOptions | undefined): Promise<typeof import("mongoose")>', gave the following error. Argument of type 'string | undefined' is not assignable to parameter of type 'string'. Type 'undefined' is not assignable to type 'string'. 5 const conn = await mongoose.connect(process.env.MONGO_URI, {

Intenté declarar dotenv.config() dentro de db.ts y eliminar la opción de ruta al declararlo en server.ts . Al pasar el mouse sobre la variable de entorno en VSCode, se muestra (property) NodeJS.ProcessEnv.MONGO_URI: string . Así que realmente pensé que esto estaba bien configurado, pero debo estar perdiendo algo.

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Este error puede deberse a las reglas del archivo tsconfig.json. Lo más probable es que se deba a "strictNullChecks": true es posible que haya puesto esta regla en true . Hay dos soluciones simples:

  1. ponga esta regla en falso como este "strictNullChecks": false .
  2. O agregar ! inmediatamente después de process.env.MONGO_URI así: process.env.MONGO_URI! . ¡El símbolo ! le asegura a su transpilador mecanografiado que el valor no será indefinido .
over 4 years ago · Santiago Trujillo Denunciar

0

Intente agregarlo dentro de un archivo global.d.ts como este

 declare global { namespace NodeJS { interface ProcessEnv { PORT?: string; NODE_ENV: 'development' | 'production'; MONGO_URI: string; } } } export {};
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda