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.ts
para ver como isso funciona.
main.ts
tem o seguinte:
import { environment } from './environments/environment';
if (environment.production) {
enableProdMode();
}
Portanto, verifique environment.production
se 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 --prod
compilação sempre retorna true e sempre o impede de executar no modo dev. Em vez disso, verifique environment.production
se 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 mode
Angular, como @yurzui disse, é necessário ligar, { isDevMode } from @angular/core
mas ele false
só poderá retornar se você ligar enableProdMode
antes.
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 false
corretamente.
ng build --prod=true
via 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/core
que 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
}