Câu trả lời:
Bạn có thể sử dụng chức năng này làDevMode
import { isDevMode } from '@angular/core';
...
export class AppComponent {
constructor() {
console.log(isDevMode());
}
}
Một lưu ý : hãy cẩn thận với chức năng này
if(isDevMode()) {
enableProdMode();
}
Bạn sẽ nhận được
Lỗi: Không thể bật chế độ prod sau khi thiết lập nền tảng
biến môi trường
import { environment } from 'src/environments/environment';
if (environment.production) {
//
}
được chèn bởi biến webpack process.env.NODE_ENV
declare let process: any;
const env = process.env.NODE_ENV;
if (env === 'production') {
//
}
platformBrowserDynamic().bootstrapModule(AppModule);
Theo hướng dẫn Triển khai góc tại https://angular.io/guide/deployment#enable-production-mode :
Xây dựng để sản xuất (hoặc gắn thêm cờ --en môi trường = prod) cho phép chế độ sản xuất Nhìn vào CLI được tạo
main.tsđể xem cách thức hoạt động của nó.
main.ts có những điều sau đây
import { environment } from './environments/environment';
if (environment.production) {
enableProdMode();
}
Vì vậy, kiểm tra environment.productionđể xem nếu bạn đang sản xuất.
Nhiều khả năng bạn KHÔNG muốn gọi isDevMode(). Theo tài liệu API góc tại https://angular.io/api/core/isDevMode :
Sau khi được gọi một lần, giá trị sẽ bị khóa và sẽ không thay đổi nữa ... Theo mặc định, điều này là đúng, trừ khi người dùng gọi enableProdMode trước khi gọi điều này.
Tôi thấy rằng việc gọi isDevMode()từ bản ng build --proddựng luôn trả về đúng và luôn khóa bạn khi chạy ở chế độ dev. Thay vào đó, hãy kiểm tra environment.productionxem bạn có đang sản xuất không. Sau đó, bạn sẽ ở trong chế độ sản xuất.
isDevMode()là một cách hoàn toàn tốt để thực hiện cái đó.
Nếu bạn muốn biết modevề Angular, như @yurzui đã nói, bạn cần gọi { isDevMode } from @angular/corenhưng nó chỉ có thể quay lại falsenếu bạn gọi enableProdModetrước nó.
Nếu bạn muốn biết môi trường xây dựng , nói cách khác, nếu ứng dụng của bạn có chạy tối thiểu hóa hay không, bạn cần đặt biến xây dựng trong hệ thống xây dựng của mình ... WebpackChẳng hạn, bạn nên xem qua 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();
Đây là mã của tôi, vì vậy tôi đã nhận được cùng một lỗi. Tôi chỉ thay thế dòng 3 và 4. Sau đó, vấn đề đã được khắc phục . Vì vậy, trước khi mô-đun bootstrapping chúng ta nên kích hoạt chế độ --prod.
Một cách chính xác có thể được đặt theo cách này,
enableProdMode()
platformBrowserDynamic().bootstrapModule(AppModule);
Bạn nên cẩn thận rằng bạn kiểm tra giá trị trả về của isDevMode()hàm.
Thiết lập của tôi đã thất bại bởi vì tôi đang kiểm tra sự tồn tại: if (isDevMode)luôn luôn true, ngay cả trong sản xuất vì tôi đã tuyên bố nó với import { isDevMode } from '@angular/core';.
if (isDevMode())trả lại falsechính xác.
ng build --prod=truethông qua cli góc
if ( isDevMode )chỉ kiểm tra nếu định danh isDevMode được xác định, không null và không trống cũng không bằng không. Vì định danh được định nghĩa trong @angular/coređó if () sẽ luôn trả về true . Bây giờ, if( isDevMode() )sẽ thực sự gọi hàm và nó sẽ trả về nếu đó là môi trường phát triển hay không.
Chỉ cần kiểm tra biến sản xuất có trong tệp môi trường, nó sẽ đúng với chế độ sản xuất và sai cho phát triển.
import { environment } from 'src/environments/environment';
if (environment.production) {
// for production
} else {
// for development
}