Respostas:
Você pode usar esta função isDevMode
import { isDevMode } from '@angular/core';
...
export class AppComponent {
constructor() {
console.log(isDevMode());
}
}
Uma observação : tenha cuidado com esta função
if(isDevMode()) {
enableProdMode();
}
Você vai ter
Erro: não é possível ativar o modo prod após a configuração da plataforma
variável de ambiente
import { environment } from 'src/environments/environment';
if (environment.production) {
//
}
injetado pela variável webpack process.env.NODE_ENV
declare let process: any;
const env = process.env.NODE_ENV;
if (env === 'production') {
//
}
platformBrowserDynamic().bootstrapModule(AppModule);
De acordo com o guia Angular Deployment em https://angular.io/guide/deployment#enable-production-mode :
Construir para produção (ou anexar o sinalizador --environment = prod) ativa o modo de produção Observe a CLI gerada
main.tspara ver como isso funciona.
main.ts tem o seguinte:
import { environment } from './environments/environment';
if (environment.production) {
enableProdMode();
}
Portanto, verifique environment.productionse você está em produção.
Provavelmente você NÃO deseja ligar isDevMode(). De acordo com a documentação da API Angular em https://angular.io/api/core/isDevMode :
Depois de chamado uma vez, o valor fica bloqueado e não muda mais ... Por padrão, isso é verdade, a menos que um usuário chame enableProdMode antes de chamar isso.
Descobri que a chamada isDevMode()de uma ng build --prodcompilação sempre retorna true e sempre o impede de executar no modo dev. Em vez disso, verifique environment.productionse você está em produção. Então você permanecerá no modo de produção.
isDevMode()é uma maneira perfeitamente adequada de realizar aquele.
Se você quiser conhecer o modeAngular, como @yurzui disse, é necessário ligar, { isDevMode } from @angular/coremas ele falsesó poderá retornar se você ligar enableProdModeantes.
Se você deseja conhecer o ambiente de compilação , em outras palavras, se seu aplicativo está sendo minificado ou não, você precisa definir uma variável de compilação no seu sistema de compilação ... Usando Webpack, por exemplo, você deve dar uma olhada 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();
Este era o meu código, então recebi o mesmo erro. Troquei as linhas 3 e 4. Em seguida, o problema foi resolvido . Portanto, antes do módulo de inicialização, devemos ativar o modo --prod.
O correto pode ser colocado dessa maneira,
enableProdMode()
platformBrowserDynamic().bootstrapModule(AppModule);
Você deve ter cuidado para verificar o valor de retorno da isDevMode()função.
Minha configuração estava falhando porque eu estava verificando a existência: if (isDevMode)estava sempre true, mesmo em produção, porque eu a declarei import { isDevMode } from '@angular/core';.
if (isDevMode())retornou falsecorretamente.
ng build --prod=truevia angular CLI
if ( isDevMode )verifica apenas se o identificador isDevMode está definido, não é nulo e não está vazio nem é zero. Como o identificador foi definido em @angular/coreque se () sempre retornará verdadeiro . Agora, if( isDevMode() )realmente chamará a função e retornará se for um ambiente de desenvolvimento ou não.
Basta verificar a variável de produção presente no arquivo de ambiente, será verdadeira para o modo de produção e falsa para o desenvolvimento.
import { environment } from 'src/environments/environment';
if (environment.production) {
// for production
} else {
// for development
}