Использование переменных окружения в приложении nodejs на основе nx

Я настроил проект с несколькими nodejs и угловыми приложениями внутри рабочего пространства nrwl/nx.

Я пытаюсь работать с файлами среды внутри приложений nodejs.

Я настроил импорт следующим образом:import {environment} from './environments/environment';

Потом я побежал ng serve my-node-app и это показывает среду для непроизводства.

Теперь я пытался сделать ng serve my-node-app --prod чтобы увидеть, как приложение работает с производственными настройками, но я получаю сообщение об ошибке:

Configuration 'production' could not be found in project my-node-app,

Я что-то пропустил?

0 ответов

Я нашел этот пост, когда искал, как получить переменные среды, определенные в .env файл.

process.env.ENVIRONMENTAL_VARIABLES в веб-части можно получить доступ при рендеринге на сервере (например, Angular Universal), имея .env в корне Nrwl свойства monorepo и webpack, такие как:

const dotenv = require('dotenv-webpack');

module.exports = {
  plugins: [
    new dotenv(),
  ],
};

Не забудьте изменить свой angular.json:

...
"architect": {
  "build": {
     "builder": "@angular-builders/custom-webpack:browser",
       "options": {
         "customWebpackConfig": {
           "path": "./webpack.browser.config.js",
           "replaceDuplicatePlugins": true
          },
          ...

Я назвал обычай webpack в виде webpack.browser.config.js.

Теперь, допустим, у вас есть server/..., который вы используете для некоторых серверных вещей, то они не будут доступны вам там. Вам необходимо установить dotenv пакет и в server/main.ts, допустим, что это корень вашего сервера, поэтому вам потребуется этот пакет:

require('dotenv').config();

Примечание: до Angular 8 мы также смогли установить webpackлогика, связанная с сервером, в файле, таком как webpack.server.config.js. Следовательно, можно было применить в основном тот же код, связанный с dotenv, который был в webpack.browser.config.js. Однако это больше не работает. Вместо этого для создания и сервера приложений SSR используются Angular CLI Builders.

Развертывание на Firebase/с помощью Cloud Functions for Firebase (и, возможно, другие бессерверные /FaaS)?

Тогда в вашем functions папку вам нужно вставить .envфайл. Я предполагаю, что из functions вы развертываете.

Для отладки советую:

console.log(require('dotenv').config({ debug: true }));

Может сэкономить много времени.

Другие вопросы по тегам