Использование переменных окружения в приложении 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 }));
Может сэкономить много времени.