Відповіді:
Ви можете використовувати цю функцію isDevMode
import { isDevMode } from '@angular/core';
...
export class AppComponent {
constructor() {
console.log(isDevMode());
}
}
Одне зауваження : будьте обережні з цією функцією
if(isDevMode()) {
enableProdMode();
}
Ти отримаєш
Помилка: неможливо увімкнути режим prod після встановлення платформи
змінна середовище
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);
Згідно з посібником з кутового розгортання за адресою 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
складання завжди повертається істинним і завжди блокує вас працювати в режимі розробки. Натомість перевірте, environment.production
чи є у вас виробництво. Тоді ви залишитесь у виробничому режимі.
isDevMode()
розробки , це ідеально чудовий спосіб її виконання. що.
Якщо ви хочете дізнатися mode
про кутовий, як сказав @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
допомогою кутового кліпу
if ( isDevMode )
перевіряє, чи визначений ідентифікатор isDevMode , не null, не порожній і нульовий. Оскільки ідентифікатор визначено, @angular/core
що if () завжди поверне true . Тепер, if( isDevMode() )
насправді викличе функцію, і вона повернеться, якщо це середовище розробки чи ні.
Просто перевірте виробничу змінну, що присутня у файлі навколишнього середовища, вона буде істинною для режиму виробництва та помилковою для розробки.
import { environment } from 'src/environments/environment';
if (environment.production) {
// for production
} else {
// for development
}