Ответы:
Вы можете использовать эту функцию 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
}