Làm thế nào để kích hoạt chế độ sản xuất?


182

Tôi đã đọc các câu hỏi liên quan và tôi đã tìm thấy câu hỏi này , nhưng câu hỏi của tôi là làm thế nào tôi có thể chuyển từ phát triển sang chế độ sản xuất. Có một số khác biệt giữa các chế độ được chỉ ra ở đây .

Trong bảng điều khiển tôi có thể thấy ....Call enableProdMode() to enable the production mode.Tuy nhiên, tôi không chắc chắn nên gọi loại phương thức đó vào loại nào.

Ai đó có thể trả lời câu hỏi này không?


Tôi thấy việc chuyển cấu hình điên rồ bằng Webpack 2+ Angular2 và Typecript, đã tạo ra một giải pháp đơn giản: github.com/Sweetog/yet-another-angular2-boilerplate
Brian Ogden

Câu trả lời:


211

Bạn kích hoạt nó bằng cách nhập và thực thi chức năng (trước khi gọi bootstrap):

import {enableProdMode} from '@angular/core';

enableProdMode();
bootstrap(....);

Nhưng lỗi này là dấu hiệu cho thấy có điều gì đó không ổn với các ràng buộc của bạn, vì vậy bạn không nên loại bỏ nó, mà hãy cố gắng tìm hiểu tại sao nó lại xảy ra.


Làm cách nào để enableProdMode () nếu bạn không sử dụng bản in? Nếu tôi chỉ gọi phương thức này trước ng.pl platform.browser.bootstrap (...) thì tôi gặp lỗi này: enableProdMode không được xác định
Daniel Dudas

2
@DanielDudas Tôi không sử dụng es5, nhưng hãy thửng.core.enableProdMode()
Sasxa

3
Tôi tin rằng "angular2 / core" bây giờ là "@ angular / core". Xem câu trả lời của tôi dưới đây.
adampasz

Tôi đang sử dụng Ionic2. Bootstrap này được gọi là gì? Khi tôi tạo một ứng dụng mẫu ionic start test sidemenu --v2 --tstôi thấy app.tsnhưng chức năng bootstrap này được gọi ở đâu?
Guus

1
Tôi cũng làm như vậy nhưng tôi nhận được một ngoại lệ như "Không thể bật chế độ prod sau khi thiết lập nền tảng". Bất cứ ai có thể giúp tôi trong việc giải quyết này?
Gowtham

81

Cách tốt nhất để kích hoạt chế độ sản xuất cho ứng dụng Angular 2, là sử dụng angular-cli và xây dựng ứng dụng với ng build --prod. Điều này sẽ xây dựng ứng dụng với hồ sơ sản xuất. Sử dụng angular-cli có lợi ích là có thể sử dụng chế độ phát triển bằng cách sử dụng ng servehoặc ng buildtrong khi phát triển mà không thay đổi mã mọi lúc.


6
Tôi đang sử dụng Angular 6 và nó được xây dựng --prod để xây dựng ở chế độ prod. Chỉ cần đặt điều này ở đây cho bất kỳ người mới đến thăm trang này.
Verbose

Tôi nghĩ rằng build --prod đã được triển khai, hãy lưu ý đến isDevMode và enableProdMode. Câu trả lời này nên được đánh dấu là câu trả lời
bubi

58

Điều này làm việc với tôi, sử dụng bản phát hành mới nhất của Angular 2 (2.0.0-rc.1):

chính

import {enableProdMode} from '@angular/core';

enableProdMode();
bootstrap(....);

Đây là tài liệu tham khảo từ các tài liệu của họ: https://angular.io/api/core/enableProdMode



1
@emp Tôi ngạc nhiên khi tài liệu Angular chính thức enableProdModekhông cho bạn biết nơi bạn phải gọi nó.
Đại

55

Khi tôi xây dựng một dự án mới bằng angular-cli. Một tập tin được bao gồm gọi là môi trường. Bên trong tập tin này là một biến như vậy.

export const environment = {
  production: true
};

Sau đó, trong main.ts bạn có điều này.

import './polyfills.ts';
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { enableProdMode } from '@angular/core';
import { environment } from './environments/environment';
import { AppModule } from './app/';

if (environment.production) {
  enableProdMode();
}

platformBrowserDynamic().bootstrapModule(AppModule);

Bạn có thể thêm điều này vào một dự án không có góc, tôi cho rằng, vì enableProdMode () đang được nhập từ @ angular / core.


Làm thế nào điều này làm việc cho xây dựng không prod? Tôi giả sử trong trường hợp đó môi trường.ts bị bỏ qua, vì vậy bạn không gặp phải lỗi biên dịch tsc khi cố gắng nhập mô-đun?
llasarov

@llasarov môi trường.ts chỉ hoạt động giống như một tệp cấu hình, trong đó bạn có thể bật / tắt chế độ sản xuất. Main.ts chỉ gọi enableProdMode nếu nó đúng, vì vậy điều này có thể được thực hiện mà không cần bất kỳ quá trình xây dựng cụ thể nào. Bạn cũng có thể chọn đăng nhập tại đây, bằng cách kiểm tra xem logMode có gỡ lỗi không, sau đó dịch vụ logger tùy chỉnh của bạn thực hiện một StackTrace chi tiết khác chỉ cần đăng nhập một lớp lót
NitinSingh

13

Đi đến src/enviroments/enviroments.tsvà kích hoạt chế độ sản xuất

export const environment = {
  production: true
};

cho góc 2


10

Để bật chế độ sản xuất ở góc 6.XX Chỉ cần chuyển đến tệp môi trường

Thích con đường này

Đường của bạn: project>\src\environments\environment.ts

Thay đổi production: falsetừ:

export const environment = {
  production: false
};

Đến

export const environment = {
  production: true
};

nhập mô tả hình ảnh ở đây


8

Hầu hết các chế độ prod không cần thiết trong thời gian phát triển. Vì vậy, cách giải quyết của chúng tôi là chỉ kích hoạt nó khi nó KHÔNG phải localhost.

Trong trình duyệt của main.tsbạn, nơi bạn xác định AppModule gốc của mình:

const isLocal: boolean = /localhost/.test(document.location.host);
!isLocal && enableProdMode();
platformBrowserDynamic().bootstrapModule(AppModule);

Cũng isLocalcó thể được sử dụng cho các mục đích khác như enableTracingđể RouterModuletheo dõi ngăn xếp gỡ lỗi tốt hơn trong giai đoạn dev.


6

Khi ng build lệnh được sử dụng, nó sẽ ghi đè lên tập tin môi trường.

Theo mặc định khi lệnh ng build được sử dụng, nó đặt môi trường dev

Để sử dụng môi trường sản xuất, sử dụng lệnh sau ng build --env = prod

Điều này sẽ cho phép chế độ sản xuất và tự động cập nhật tệp tin môi trường.


1
Điều này đã được thay đổi trong Angular CLI 6 thành ng build --configuration=production(như mặc định sử dụng tệp angular.json do CLI tạo).
lả lơi

5

bạn có thể sử dụng trong app.ts | | tập tin main.ts

import {enableProdMode} from '@angular/core';
enableProdMode();
bootstrap(....);

4

Đối với những người thực hiện đường dẫn nâng cấp mà không chuyển sang TypeScript, hãy sử dụng:

ng.core.enableProdMode()

Đối với tôi (trong javascript), nó trông giống như:

var upgradeAdapter = new ng.upgrade.UpgradeAdapter();
ng.core.enableProdMode()
upgradeAdapter.bootstrap(document.body, ['fooApp']);

4

Bạn không cần bất kỳ môi trường.ts hoặc tập tin như vậy được cung cấp bởi dự án hạt giống của bạn. Chỉ cần có configure.ts và thêm tất cả các mục như vậy yêu cầu quyết định thời gian chạy (ví dụ: - cấu hình ghi nhật ký và url). Điều này sẽ phù hợp với bất kỳ cấu trúc thiết kế và cũng sẽ giúp trong tương lai

cấu hình.ts

export class Configuration {

   isInProductionMode : bool = true;

   // other configuration
   serviceUrl : string = "http://myserver/myservice.svc";
   logFileName : string = "...";
}

// Bây giờ sử dụng trong mã khởi động của bạn (main.ts hoặc tương đương theo thiết kế dự án hạt giống

import { Configuration } from './configuration';
import { enableProdMode } from '@angular/core';
....
if (Configuration.isInProductionMode)
    enableProdMode();

1
Làm thế nào để bạn phân biệt prod / dev với điều đó isInProductionModelà đúng / sai? Trong thời gian xây dựng?
LeOn - Han Li

Thường là tham số GULP hoặc tương đương
NitinSingh

JSON có mục nhập như sau: - "môi trường nguồn": "môi trường / môi trường.ts", "môi trường": {"dev": "môi trường / môi trường.ts", "prod": "môi trường / môi trường.prod.ts" }
NitinSingh

4

Trong tập tin môi trường.ts đặt sản xuất thành đúng

export const environment = {
  production: true
};

Thực sự EZ: P TY cho ...!
Carlos Galeano


0

Dự án Angular 2 của tôi không có tệp "main.ts" đã đề cập đến các câu trả lời khác, nhưng nó có tệp " boot.ts ", dường như là về cùng một điều. (Sự khác biệt có lẽ là do các phiên bản khác nhau của Angular.)

Thêm hai dòng này sau lệnh cuối cùng importtrong "boot.ts" có hiệu quả với tôi:

import { enableProdMode } from "@angular/core";
enableProdMode();
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.