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?
- Pré-carregar dotenv: node --require dotenv/config index.js (Nota: você não precisa importar dotenv com esta abordagem)
- 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)
- 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
