Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

1.2K
Views
Variable de entorno con dotenv y TypeScript

Creo este archivo .env :

 TYPE=xxx HOST=xxx, PORT=xxx, USERNAME=xxx, PASSWORD=xxx, DATABASE=xxx,

en mi archivo uso de esta manera:

 import * as dotenv from "dotenv"; dotenv.config(); export const typeOrmConfig: TypeOrmModuleOptions = { port: process.env.PORT }

pero solo puedo usar mi variable de port del archivo .env y no puedo usar el resto de las variables, ¿alguien puede decirme por qué no puedo usar el resto de mis vars?

over 4 years ago · Santiago Trujillo
8 answers
Answer question

0

En realidad, ha definido la ruta del archivo .env

Prueba así

 import * as dotenv from "dotenv"; dotenv.config({ path: __dirname+'/.env' });

Prueba esto también

 require('dotenv').config({ path: __dirname+'/.env' });

Cambie la ruta del archivo .env según sea necesario

referencia: https://www.npmjs.com/package/dotenv

over 4 years ago · Santiago Trujillo Report

0

Podría usar la forma integrada de NestJs para manejar esto (ConfigModule).

Configuración | nidos

 // main.ts import { Module } from '@nestjs/common'; import { ConfigModule } from '@nestjs/config'; import { InventoriesModule } from './inventories/inventories.module'; import typeORMConfig from './config/database.config'; import { TypeOrmModule } from '@nestjs/typeorm'; import { PrismaModule } from './prisma/prisma.module'; @Module({ imports: [ ConfigModule.forRoot(), // load .env file TypeOrmModule.forRoot(typeORMConfig()), InventoriesModule, PrismaModule ], }) export class AppModule { }
 // ./config/database.config import { TypeOrmModuleOptions } from '@nestjs/typeorm'; export default function (): TypeOrmModuleOptions { return { 'type': 'mysql', 'host': process.env.DB_HOST, 'port': 3306, 'username': process.env.DB_USERNAME, 'password': process.env.DB_PASSWORD, 'database': process.env.DB_DATABASE, 'entities': ['dist/**/*.entity{.ts,.js}'], 'synchronize': false } };
over 4 years ago · Santiago Trujillo Report

0

Si se trata de una aplicación React y está utilizando el script de reacción, debe anteponer la clave con REACT_APP_; de lo contrario, se ignorarán.

 REACT_APP_TYPE=xxx REACT_APP_HOST=xxx REACT_APP_PORT=xxx REACT_APP_USERNAME=xxx REACT_APP_PASSWORD=xxx REACT_APP_DATABASE=xxx

Ref -> https://create-react-app.dev/docs/adding-custom-environment-variables/

over 4 years ago · Santiago Trujillo Report

0

Mi proyecto tiene una configuración de eslint , por lo que tengo que deshabilitar la import/first

 /* eslint-disable import/first */ require('dotenv').config(); import Koa from 'koa'; import { Logger } from './utils/loggers'; import { app } from './app'; const LOGGER = Logger(); const port = parseInt(process.env.PORT as string, 10) || 8081; const server = (server: Koa) => { server.listen(port, () => { LOGGER.info(`> Ready on http://localhost:${port}`); }); }; server(app());

También podemos usar:

 import 'dotenv/config'

pero

 require('dotenv').config({path:path_to_dotenv});

es más flexible.

over 4 years ago · Santiago Trujillo Report

0

Si obtiene un valor indefinido y usa ES6, debe importarlo de la siguiente manera (el archivo .env debe estar en el directorio raíz del proyecto):

¿Cómo uso dotenv con import?

  1. Precarga dotenv: nodo --requiere dotenv/config index.js (Nota: no necesitas importar dotenv con este enfoque)
  2. Importe dotenv/config en lugar de dotenv (Nota: no necesita llamar a dotenv.config() y debe pasar opciones a través de la línea de comandos o variables de entorno con este enfoque)
  3. Cree un archivo separado que ejecutará la configuración primero como se describe en este comentario en el n.° 133

Tienes que importar en el archivo app.ts de tu proyecto (primero) Ejemplo con express:

aplicación.ts

 //here import 'dotenv/config' import express from 'express' import { userRouter } from './routes/user' const app = express() app.use(`/users`, userRouter) app.listen(process.env.PORT, () => { console.log(`running`) })

Ahora úsalo en cualquier parte de tu proyecto

Siempre es bueno leer la documentación .

over 4 years ago · Santiago Trujillo Report

0

Debe importar el dotenv y ejecutar dotenv.config() en la parte superior del archivo raíz.

Tan pronto como sea posible en su aplicación, solicite y configure dotenv. Ref: dotenv-npm

over 4 years ago · Santiago Trujillo Report

0

Esta es la forma en que Nestjs establece variables de entorno:

 npm install @nestjs/config

Ese paquete usa internamente el paquete dotenv que reúne todas las variables de entorno en su máquina.

aplicación.módulo.ts

 // configModule chooses the .env file, configservice extract the settings import { ConfigModule, ConfigService } from '@nestjs/config'; @Module({ imports: [ // list your project's modules ConfigModule.forRoot({ // this is set so we do not have to reimport the ConfigModule all over the place into other modules isGlobal: true, envFilePath: `.env.${process.env.NODE_ENV}`, }), // Notice we are not using TypeOrmModule.forRoot({}) // we set this to get access to ConfigService through dependency injection system TypeOrmModule.forRootAsync({ // this tell DI system, find the configService which has all of the config info inject: [ConfigService], useFactory: (config: ConfigService) => { return { type: 'sqlite', database: config.get<string>('DATABASE'), synchronize: true, entities: [User, Report], }; }, }),
over 4 years ago · Santiago Trujillo Report

0

También tuve este problema, me estaba volviendo loco hasta que me di cuenta de que copié los valores de entorno pegados de un archivo YAML que no tiene el mismo formato que el archivo .env .

Uno usa : , el otro usa = .

Si ayuda a otra alma de desarrollador :-)

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!