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 --prod
dự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.production
xem 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 mode
về Angular, như @yurzui đã nói, bạn cần gọi { isDevMode } from @angular/core
nhưng nó chỉ có thể quay lại false
nếu bạn gọi enableProdMode
trướ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 ... Webpack
Chẳ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 false
chính xác.
ng build --prod=true
thô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
}