web-dev-qa-db-ja.com

Angularアプリケーションが実稼働モードまたは開発モードで実行されているかどうかを確認する方法

これは簡単なように見えますが、解決策が見つかりませんでした。

では、アプリが運用モードまたは開発モードで実行されているかどうかを確認するにはどうすればよいですか?

81
maxbellec

この機能を試すことができますisDevMode

import { isDevMode } from '@angular/core';

...
export class AppComponent { 
  constructor() {
    console.log(isDevMode());
  }
}

1つのメモ:この関数には注意してください

if(isDevMode()) {
  enableProdMode();
}

あなたが取得します

エラー:プラットフォームのセットアップ後にprodモードを有効にできません

140
yurzui

https://angular.io/guide/deployment#enable-production-mode のAngularデプロイメントガイドに従って:

本番用にビルドする(または--environment = prodフラグを追加する)と、本番モードが有効になりますCLIで生成されたmain.tsを見て、これがどのように機能するかを確認します。

main.tsには次のものがあります。

import { environment } from './environments/environment';

if (environment.production) {
  enableProdMode();
}

したがって、environment.productionをチェックして、実稼働中かどうかを確認してください。

ほとんどの場合、isDevMode()を呼び出したくないでしょう。 https://angular.io/api/core/isDevMode のAngular AP​​Iドキュメントに従って:

一度呼び出された後、値はロックされ、それ以上変更されません...デフォルトでは、これを呼び出す前にユーザーがenableProdModeを呼び出さない限り、これはtrueです。

ng build --prodビルドからisDevMode()を呼び出すと、常にtrueが返され、常に開発モードでの実行にロックされることがわかりました。代わりに、environment.productionをチェックして、実稼働中かどうかを確認してください。その後、実動モードのままになります。

10
Ron DeSantis

それはあなたが何を求めているかに依存します...

@yurzuiが言ったように、Angularのmodeを知りたい場合は、{ isDevMode } from @angular/coreを呼び出す必要がありますが、その前にfalseを呼び出した場合にのみenableProdModeを返すことができます。

ビルド環境を知りたい場合、つまりアプリが縮小されているかどうかを確認する場合は、ビルドでビルド変数を設定する必要がありますsystem ... Webpackを使用すると、たとえば、definePluginを確認する必要があります。

https://webpack.github.io/docs/list-of-plugins.html#defineplugin

new webpack.DefinePlugin({
  ENV_PRODUCTION: !!process.env.NODE_ENV
});
2
Hitmands

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);

1
DEEPAN KUMAR