Pesquisa de site

javascript - Variável de ambiente com dotenv e TypeScript


Eu crio este arquivo .env:

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

no meu arquivo eu uso desta maneira:

import * as dotenv from "dotenv";

dotenv.config();

export const typeOrmConfig: TypeOrmModuleOptions = {
    port: process.env.PORT
}

mas eu posso usar apenas minha variável port do arquivo .env e não posso usar o resto das variáveis, alguém pode me dizer por que eu não consigo usar o resto das minhas variáveis?

Resposta #1

Na verdade, você precisa definir o caminho do arquivo .env

Tente assim

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

Tente isto também

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

Altere o caminho do arquivo .env conforme necessário

referência: https://github.com/motdotla/dotenv#options

Resposta #2

Se você obtiver um valor indefinido e se estiver usando ES6, você precisa importá-lo da seguinte forma (o arquivo .env deve estar no diretório raiz do projeto):

Como eu uso dotenv com import?

  1. Pré-carregar dotenv: node --require dotenv/config index.js (Nota: você não precisa importar dotenv com esta abordagem)
  2. Importe dotenv/config em vez de dotenv (Nota: você não precisa chamar dotenv.config() e deve passar as opções via linha de comando ou variáveis de ambiente com esta abordagem)
  3. Crie um arquivo separado que executará a configuração primeiro conforme descrito neste comentário no #133

Você precisa importar no arquivo app.ts do seu projeto (primeiro) Exemplo com express:

app.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`)
})

Agora use isso em qualquer lugar do seu projeto

É sempre bom ler a documentação

Artigos relacionados