উত্পাদন বনাম সনাক্তকরণ সনাক্তকরণ সময়ে রানঅ্যাক্ট করুন


103

প্রতিক্রিয়াটির বর্তমান সংস্করণটি রানটাইমের সময় উন্নয়ন বা উত্পাদন কিনা তা সনাক্ত করা সম্ভব? আমি এরকম কিছু করতে চাই:

if (React.isDevelopment) {
  // Development thing
} else {
  // Real thing
}

উত্তর:


167

এটি আপনার বিল্ড টুল - ওয়েবপ্যাক, ব্রাউজারিফাই - দিয়ে এক্সপোজারের মাধ্যমে নোডের উপায়গুলি করার সেরা কাজটি করা হয় process.env.NODE_ENV। সাধারণত, আপনি এটি প্রোডে "উত্পাদন" এবং ডেভ মধ্যে "বিকাশ" (বা অপরিজ্ঞাত) সেট করতে পারেন।

সুতরাং আপনার কোড হয়ে যায়:

if (!process.env.NODE_ENV || process.env.NODE_ENV === 'development') {
    // dev code
} else {
    // production code
}

কীভাবে এটি সেট আপ করবেন তার জন্য ওয়েবপ্যাকে পরিবেশ-নির্ভর ভেরিয়েবলগুলি envify বা পাসিং দেখুন


এটি আমার জন্য কাজ করেছিল, একবার আমি ইনস্টল করেছিলাম browserifyএবং envify
pfhayes

4
process is not definedক্লায়েন্ট উপর।
trusktr

4
আপনাকে ওয়েবপ্যাকের মতো বিল্ড টুল ব্যবহার করতে হবে।
ডেভিড এল ওয়ালশ

8
আপনি যদি তৈরি-প্রতিক্রিয়া-অ্যাপ্লিকেশন ব্যবহার process.env.NODE_ENVকরেন তবে বিকাশ মোডে "বিকাশ" হবে।
জোসেফ 238

4
@ জোসেফ 238-এর মন্তব্যে যুক্ত করা - তৈরি-প্রতিক্রিয়া-অ্যাপ্লিকেশন ব্যবহার করার সময়, process.env.NODE_ENVআপনার জন্য সংজ্ঞায়িত করা হবে এবং আপনার অ্যাপ্লিকেশনটিতে যে কোনও জায়গায় আপনার এতে অ্যাক্সেস রয়েছে। বিস্তারিত জানার জন্য ডকুমেন্টেশন প্রতিক্রিয়া দেখুন
শ্যাং চেং

9

আমি একটি সহায়ক ফাইল (টাইপস্ক্রিপ্টে) ব্যবহার করি:

import process from "process";

const development: boolean = !process.env.NODE_ENV || process.env.NODE_ENV === 'development';

export default function isDev(): boolean
{
    return development;
}

তারপরে অন্য কোথাও আমি এটি ব্যবহার করি:

import isDev from "./helpers/DevDetect";

if (isDev())
{
    ...
}

3

আমি সূচক html থেকে এটিতে অ্যাক্সেস চেয়েছিলাম এবং এমন একটি সমাধান চেয়েছিলাম যা ওয়েবপ্যাকটি বের করে দেওয়ার বা অতিরিক্ত মডিউলগুলির সাথে এটি কনফিগার করার সাথে জড়িত না এবং আমি এটি নিয়ে এসেছি।

উত্সগুলি হ'ল উপরের ডেভিডের উত্তর এবং এইচটিএমএল ফাইলটিতে পরিবেশের ভেরিয়েবলগুলি ব্যবহার করার জন্য ক্রিয়েট-রি্যাক্ট-অ্যাপ ডকুমেন্টেশন

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