This seems an easy one, but I couldn't find any solution.
So, how do I check if my app is running in production mode or dev mode?
This seems an easy one, but I couldn't find any solution.
So, how do I check if my app is running in production mode or dev mode?
You can use this function isDevMode
import { isDevMode } from '@angular/core';
...
export class AppComponent {
constructor() {
console.log(isDevMode());
}
}
One note: be carefull with this function
if(isDevMode()) {
enableProdMode();
}
You will get
Error: Cannot enable prod mode after platform setup
environment variable
import { environment } from 'src/environments/environment';
if (environment.production) {
//
}
injected by webpack process.env.NODE_ENV variable
declare let process: any;
const env = process.env.NODE_ENV;
if (env === 'production') {
//
}
platformBrowserDynamic().bootstrapModule(AppModule);
–
Delict console.log("Angular in Development mode: " + isDevMode());
–
Handful Per the Angular Deployment guide at https://angular.io/guide/deployment#enable-production-mode:
Building for production (or appending the --environment=prod flag) enables production mode Look at the CLI-generated
main.ts
to see how this works.
main.ts
has the following:
import { environment } from './environments/environment';
if (environment.production) {
enableProdMode();
}
So check environment.production
to see if you are in production.
Most likely you do NOT want to call isDevMode()
. Per the Angular API documentation at https://angular.io/api/core/isDevMode:
After called once, the value is locked and won't change any more... By default, this is true, unless a user calls enableProdMode before calling this.
I've found that calling isDevMode()
from an ng build --prod
build always returns true and always locks you into running in dev mode. Instead, check environment.production
to see if you are in production. Then you will stay in production mode.
isDevMode()
is a perfectly fine way to accomplish that. –
Nozzle Simply check the production variable present in the environment file, it will be true for production mode and false for development.
import { environment } from 'src/environments/environment';
if (environment.production) {
// for production
} else {
// for development
}
If you want to know the mode
of Angular, as @yurzui said, you need to call { isDevMode } from @angular/core
but it can return false
only if you call enableProdMode
before it.
If you want to know the build environment, in other words, if your app is running minified or not, you need to set a build variable in your build system... Using Webpack
, for example, you should have a look at 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();
This was my code, so I got the same error. I just interchanged line 3 and 4. Then the issue is fixed. So before bootstrapping module we should enable --prod mode.
The correct one can be put in this way,
enableProdMode()
platformBrowserDynamic().bootstrapModule(AppModule);
You should be careful that you check the return value of the isDevMode()
function.
My setup was failing because i was checking for existence: if (isDevMode)
was always true
, even in production because i declared it with import { isDevMode } from '@angular/core';
.
if (isDevMode())
returned false
correctly.
ng build --prod=true
via angular cli –
Ewold if ( isDevMode )
only checks if the identifier isDevMode is defined, not null, and not empty nor zero. As the identifier was defined in @angular/core
that if() will always return true. Now, if( isDevMode() )
will actually call the function and it will return if it's development environment or not. –
Unmoor declare let process: any;
const env = process.env.NODE_ENV;
export const environment = {
apiURL: (env === 'production')
? 'https://example.com/api'
: 'http://localhost:8080/api'
};
env
? –
Rapid © 2022 - 2024 — McMap. All rights reserved.