Файл NestJS .env не создается

Я использую dotenv v8.2.0 в своем проекте NestJS, и он всегда работал в моей производственной среде. Я клонировал проект на свой новый компьютер, создал файл .env с правильными переменными в корневой папке, но файл .env теперь не встраивается в папку dist.

Файл .env:

databaseHost=database-di... 
databasePassword=a3^U...

Настройка моего файла main.ts (только соответствующие части):

import { config } from 'dotenv';
import * as path from 'path';`

const ENV_FILE = path.join(__dirname, '..', '.env');
config({ path: ENV_FILE });

Когда я регистрирую функцию конфигурации dotenv, я получаю следующее:

{
  error: Error: ENOENT: no such file or directory, open 'C:\Users\Jasper\***\dist\.env'
      at Object.openSync (fs.js:461:3)
      at Object.readFileSync (fs.js:364:35)
      at Object.config (C:\Users\Jasper\***\node_modules\dotenv\lib\main.js:96:29)
      at Object.<anonymous> (C:\Users\Jasper\***\dist\src\main.js:21:22)
      at Module._compile (internal/modules/cjs/loader.js:1176:30)
      at Object.Module._extensions..js (internal/modules/cjs/loader.js:1196:10)
      at Module.load (internal/modules/cjs/loader.js:1040:32)
      at Function.Module._load (internal/modules/cjs/loader.js:929:14)
      at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12)
      at internal/main/run_main_module.js:17:47 {
    errno: -4058,
    syscall: 'open',
    code: 'ENOENT',
    path: 'C:\\Users\\Jasper\\***\\dist\\.env'
  }

Когда я смотрю на папку dist, файл .env действительно не переносится, хотя раньше он работал всегда. Регистрация переменных в папке .env возвращает undefined.

Кто-нибудь знает, что я делаю не так?


person Jasper Rosiers    schedule 16.05.2020    source источник


Ответы (1)


Файл .env не является файлом Typescript или JavaScript и, как таковой, не будет перемещен Typescript. Вы можете переместить его, используя свойство assets nest-cli.json, но тогда вам нужно будет убедиться, что ваш .env файл зафиксирован, что является плохой практикой. Вместо этого файл .env следует читать из корня проекта (на том же уровне, что и package.json), и каждая среда должна иметь свой собственный файл .env для защиты секретов.

person Jay McDoniel    schedule 16.05.2020
comment
Все хорошо, спасибо! Я понятия не имел, так как я новичок в TS & JS. Теперь я настроил его, чтобы вытащить их из корневой папки, и это сработало. Мы работаем с Kubernetes Secrets, чтобы хранить секреты в файле .env для CI / CD, поэтому нет необходимости коммитить файл :) - person Jasper Rosiers; 18.05.2020