Ответы:
Вы можете использовать эту функцию isDevMode
import { isDevMode } from '@angular/core';
...
export class AppComponent {
constructor() {
console.log(isDevMode());
}
}
Одно замечание : будьте осторожны с этой функцией
if(isDevMode()) {
enableProdMode();
}
Ты получишь
Ошибка: не удается включить режим продакшена после настройки платформы
переменная окружения
import { environment } from 'src/environments/environment';
if (environment.production) {
//
}
введен переменной webpack process.env.NODE_ENV
declare let process: any;
const env = process.env.NODE_ENV;
if (env === 'production') {
//
}
platformBrowserDynamic().bootstrapModule(AppModule);
Согласно руководству по развертыванию Angular по адресу https://angular.io/guide/deployment#enable-production-mode :
Сборка для производства (или добавление флага --environment = prod) включает рабочий режим. Посмотрите на созданный CLI,
main.ts
чтобы увидеть, как это работает.
main.ts
имеет следующее:
import { environment } from './environments/environment';
if (environment.production) {
enableProdMode();
}
Так что проверьте environment.production
, находитесь ли вы в производстве.
Скорее всего, вы НЕ хотите звонить isDevMode()
. Согласно документации Angular API на https://angular.io/api/core/isDevMode :
После однократного вызова значение заблокировано и больше не изменится ... По умолчанию это правда, если пользователь не вызывает enableProdMode перед вызовом этого.
Я обнаружил, что вызов isDevMode()
из ng build --prod
сборки всегда возвращает true и всегда блокирует работу в режиме разработки. Вместо этого проверьте environment.production
, находитесь ли вы в производстве. Тогда вы останетесь в производственном режиме.
isDevMode()
это отличный способ выполнить который.
Если вы хотите узнать mode
об Angular, как сказал @yurzui, вам нужно позвонить, { isDevMode } from @angular/core
но он может вернуться, false
только если вы позвоните enableProdMode
до него.
Если вы хотите узнать среду сборки , другими словами, работает ли ваше приложение в миниатюре или нет, вам необходимо установить переменную сборки в вашей системе сборки ... Используя Webpack
, например, вы должны взглянуть на definePlugin
.
https://webpack.github.io/docs/list-of-plugins.html#defineplugin
new webpack.DefinePlugin({
ENV_PRODUCTION: !!process.env.NODE_ENV
});
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'
import { enableProdMode } from '@angular/core';
import { AppModule } from './app.module'
platformBrowserDynamic().bootstrapModule(AppModule);
enableProdMode();
Это был мой код, поэтому я получил ту же ошибку. Я просто поменял местами строки 3 и 4. Тогда проблема исправлена . Поэтому перед загрузкой модуля мы должны включить режим --prod.
Правильный можно поставить так,
enableProdMode()
platformBrowserDynamic().bootstrapModule(AppModule);
Будьте осторожны, проверяя возвращаемое значение isDevMode()
функции.
Моя установка не удалась, потому что я проверял наличие: if (isDevMode)
всегда true
, даже в производстве, потому что я заявил об этом с помощью import { isDevMode } from '@angular/core';
.
if (isDevMode())
вернулся false
правильно.
ng build --prod=true
помощью angular
if ( isDevMode )
только проверяет, определен ли идентификатор isDevMode , а не ноль, не пустой и не ноль. Поскольку идентификатор был определен в @angular/core
том, что if () всегда будет возвращать true . Теперь if( isDevMode() )
фактически вызовет функцию, и она вернется, если это среда разработки или нет.
Просто проверьте производственную переменную, присутствующую в файле среды, она будет верна для производственного режима и ложна для разработки.
import { environment } from 'src/environments/environment';
if (environment.production) {
// for production
} else {
// for development
}