প্রোডাকশন বা ডেভলপমেন্ট মোডে অ্যাংুলার অ্যাপ্লিকেশন চলছে কিনা তা কীভাবে পরীক্ষা করবেন


131

এটি একটি সহজ বলে মনে হচ্ছে, তবে আমি কোনও সমাধান খুঁজে পাইনি।

সুতরাং, আমার অ্যাপ্লিকেশনটি প্রডাকশন মোডে বা ডেভ মোডে চলছে কিনা তা আমি কীভাবে পরীক্ষা করব?

উত্তর:


198

আপনি এই ফাংশনটি ডেভমড ব্যবহার করতে পারেন

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

...
export class AppComponent { 
  constructor() {
    console.log(isDevMode());
  }
}

একটি নোট : এই ফাংশনটি সম্পর্কে সাবধান

if(isDevMode()) {
  enableProdMode();
}

তুমি পাবে

ত্রুটি: প্ল্যাটফর্ম সেটআপের পরে প্রোড মোড সক্ষম করা যায় না

অন্যান্য অপশন

পরিবেশ সূচক

import { environment } from 'src/environments/environment';

if (environment.production) {
  //
}

ওয়েবপ্যাক প্রক্রিয়া দ্বারা ইনজেকশনের। এনওড

declare let process: any;
const env = process.env.NODE_ENV;

if (env  === 'production') {
  //
}

আপনি উল্লিখিত একই ত্রুটি পেয়ে যাচ্ছি। "প্ল্যাটফর্ম সেটআপের পরে প্রোড মোড সক্ষম করা যায় না"। আপনি কি আমাকে সমাধান করতে সাহায্য করতে পারেন? @ ইয়ুরজুই
গৌতম ২

@ গওথাম আপনাকে কল করার আগে এটি সক্ষম করতে হবেplatformBrowserDynamic().bootstrapModule(AppModule);
yurzui

ঠিক এভাবেই আমি এটি ডাকছি। তবুও আমি প্রতিবার প্রোডাকশন মোড @ ইউরজুইতে অ্যাপটি চালানোর চেষ্টা করার সময় আমি এই ত্রুটিটি পাচ্ছি। এটি সমাধানে যে কোনও সহায়তা করা অনেক প্রশংসিত হবে। ধন্যবাদ
গ্যাথাম

@ গৌতম এটির পুনরুত্পাদন করার জন্য আপনার কি কোনও উদাহরণ আছে?
yurzui

2
angular.io/api/core/isDevMode "একবার কল করার পরে, মানটি লক হয়ে গেছে এবং আর কোনও পরিবর্তন হবে না।" উত্তরে ডক এবং এই সতর্কতা অন্তর্ভুক্ত করা উচিত!
জেসি

38

Https://angular.io/guide/dep रोजगार#enable-pr Prod-- মোড এ কৌণিক স্থাপনা গাইড অনুসারে :

উত্পাদনের জন্য বিল্ডিং (বা - এনভায়রনমেন্ট = প্রোড ফ্ল্যাগ সংযোজন) উত্পাদন মোড সক্ষম করে এটি main.tsকীভাবে কাজ করে তা দেখতে সিএলআই-উত্পাদিত দেখুন।

main.ts নিম্নলিখিত রয়েছে:

import { environment } from './environments/environment';

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

সুতরাং environment.productionআপনি প্রযোজনা করছেন কিনা তা পরীক্ষা করে দেখুন।

সম্ভবত আপনি কল করতে চান না isDevMode()Https://angular.io/api/core/isDevMode এ কৌণিক এপিআই ডকুমেন্টেশন অনুসারে :

একবার কল করার পরে, মানটি লক হয়ে গেছে এবং আর কোনও পরিবর্তন হবে না ... ডিফল্টরূপে, এটি সত্য, যদি না কোনও ব্যবহারকারী এটিকে কল করার আগে এন্টারপ্রাইডমড কল করে।

আমি খুঁজে পেয়েছি যে isDevMode()কোনও ng build --prodবিল্ড থেকে কল করা সর্বদা সত্য ফিরে আসে এবং সর্বদা আপনাকে দেব মোডে দৌড়তে লক করে। পরিবর্তে, environment.productionআপনি উত্পাদন করছেন কিনা তা পরীক্ষা করে দেখুন। তারপরে আপনি প্রোডাকশন মোডে থাকবেন।


2
এটি গ্রহণযোগ্য উত্তর হওয়া উচিত। (যথাযথ ডক সংযোগ এবং ব্যাখ্যা))
জেসি

1
মানটি পরিবর্তিত হবে না এর অর্থ আপনি এটি কল করতে চান না তা বোঝায় না। আপনার অ্যাপ্লিকেশন চলাকালীন আপনার ডেভ মোড থেকে প্রোড মোডে ফিরে যেতে হবে না। সুতরাং আপনি যখন প্রডাকশন মোড সক্ষম করবেন কিনা তা নির্ধারণের চেষ্টা করার সময়, পরিবেশের পরিবর্তনশীলটি সঠিক পথে যাওয়ার উপায়, তবে আপনার যদি এমন কোনও পরিষেবা থাকে যা ডেভ মোডে থাকাকালীন কিছুটা আলাদা আচরণ করা প্রয়োজন, isDevMode()এটি সম্পাদন করার জন্য একটি দুর্দান্ত উপায় is যে।
স্ট্রিপলিং ওয়ারিয়র

4

এটি আপনি যা জিজ্ঞাসা করছেন তার উপর নির্ভর করে ...

আপনি যদি modeকৌণিকের কাহিনীটি জানতে চান , যেমন @ ইয়ুরজুই বলেছেন, আপনাকে কল করা দরকার { isDevMode } from @angular/coreতবে এটির আগে falseফোন করলেই এটি ফিরে আসতে enableProdModeপারে।

আপনি যদি বিল্ড এনভায়রনমেন্টটি জানতে চান , অন্য কথায়, যদি আপনার অ্যাপটি মিনিড চালানো হয় বা না হয় তবে আপনার বিল্ড সিস্টেমে আপনার বিল্ড ভেরিয়েবল সেট করা দরকার ... Webpackউদাহরণস্বরূপ, আপনার নজর দেওয়া উচিত definePlugin

https://webpack.github.io/docs/list-of-plugins.html#defineplugin

new webpack.DefinePlugin({
  ENV_PRODUCTION: !!process.env.NODE_ENV
});

আমি আসলে দুজনকেই খুঁজছিলাম। আমি ওয়েবপ্যাকটি ব্যবহার করছি (কৌণিক-ক্লিপের মাধ্যমে), আমি আপনার কোডের লাইনগুলি কোথায় যুক্ত করব? আমার টাইপ স্ক্রিপ্ট ফাইলগুলিতে সেই পরিবর্তনশীলটিতে আমার কীভাবে অ্যাক্সেস থাকবে? আপনি নিজের উত্তরটি আপডেট করতে পারলে আমি দুর্দান্ত
হব


আপনার পোস্টের লিঙ্কটি পুরানো হয়ে গেছে, সংজ্ঞায়িত প্লাগইনটির
একটিটি এখানে রয়েছে

2
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'
import { enableProdMode } from '@angular/core';
import { AppModule } from './app.module'


platformBrowserDynamic().bootstrapModule(AppModule);
enableProdMode();

এটি আমার কোড ছিল, সুতরাং আমি একই ত্রুটি পেয়েছি। আমি শুধু লাইন 3 এবং 4 আন্তঃপরিবর্তন তারপর ইস্যু করা হয় সংশোধন করা হয়েছে । সুতরাং বুটস্ট্র্যাপিং মডিউলটির আগে আমাদের উচিত - প্রড মোড enable

সঠিকটি এইভাবে রাখা যেতে পারে,

enableProdMode()
platformBrowserDynamic().bootstrapModule(AppModule);

1
মজার বিষয় হল, আমার নতুন অ্যাঙ্গুলার 9 অ্যাপ্লিকেশনটি এই "লাইনগুলি (এই ক্রমে!) ইতিমধ্যে আমার" main.ts "ফাইলে রেখে দিয়েছে। এটি এখন ডিফল্ট বলে মনে হচ্ছে।
মাইক গ্লেডহিল

1

isDevMode()ফাংশনের রিটার্নের মানটি যাচাই করে নেওয়া উচিত You

আমার সেটআপটি ব্যর্থ হয়েছিল কারণ আমি অস্তিত্বের জন্য যাচাই করছিলাম: if (isDevMode)সর্বদা ছিল true, এমনকি উত্পাদনেও কারণ আমি এটি দিয়ে ঘোষণা করেছিলাম import { isDevMode } from '@angular/core';

if (isDevMode())falseসঠিকভাবে ফিরে এসেছে ।


ng build --prod=trueকৌণিক ক্লিপ দিয়ে আপনাকে অ্যাপ তৈরির চেষ্টা করুন
সতীশ কুমার কে কে

if ( isDevMode )কেবলমাত্র শনাক্তকারী ডেডমোড সংজ্ঞায়িত, নাল নয়, এবং খালি বা শূন্য নয় তা পরীক্ষা করে থাকে । হিসাবে আইডেন্টিফায়ার সংজ্ঞায়িত করা হয় @angular/coreযে () যদি সবসময় ফিরে আসবে সত্য । এখন, if( isDevMode() )আসলে ফাংশনটি কল করবে এবং এটি যদি পরিবেশের পরিবেশ না হয় তবে তা ফিরে আসবে।
ডাব্লুপিমিয়ার

1

এনভায়রনমেন্ট ফাইলে উপস্থিত প্রোডাকশন ভেরিয়েবলটি কেবল পরীক্ষা করে দেখুন, এটি উত্পাদন মোডের ক্ষেত্রে সত্য এবং বিকাশের জন্য মিথ্যা।

import { environment } from 'src/environments/environment';

if (environment.production) {
  // for production
} else {
  // for development
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.