回答:
この関数を使用できます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);
https://angular.io/guide/deployment#enable-production-modeの Angular Deploymentガイドによると:
本番用にビルドする(または--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 APIドキュメントに従って:
一度呼び出されると、値はロックされ、それ以上変更されません...ユーザーがこれを呼び出す前にenableProdModeを呼び出さない限り、デフォルトではこれはtrueです。
ビルドisDevMode()
からの呼び出しはng build --prod
常にtrueを返し、常に開発者モードでの実行にロックされることがわかりました。代わりに、実際environment.production
に稼働しているかどうかを確認してください。その後、プロダクションモードのままになります。
isDevMode()
は完全に優れた方法です。それ。
mode
@yurzuiが言ったように、Angularのを知りたい場合は、呼び出す必要があります{ 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() )
実際に関数が呼び出され、開発環境かどうかにかかわらず戻ります。