নোড.জেএস-এ প্রসেস.ইন.ভেটপোর্ট কী?


175

কি হয় process.env.PORT || 3000Node.js জন্য ব্যবহার করেন নি? আমি এটি কোথাও দেখেছি:

 app.set('port', process.env.PORT || 3000);

যদি এটি 3000শ্রবণ পোর্ট হিসাবে সেট করতে ব্যবহৃত হয় , আমি কি পরিবর্তে এটি ব্যবহার করতে পারি?

app.listen(3000);

না হলে কেন?

উত্তর:


237

অনেক পরিবেশে (যেমন হেরোকু), এবং একটি কনভেনশন হিসাবে, PORTআপনার ওয়েব সার্ভারটি কী পোর্ট শুনতে হবে তা জানাতে আপনি পরিবেশের পরিবর্তনশীল সেট করতে পারেন ।

এর process.env.PORT || 3000অর্থ: পরিবেশের পরিবর্তনশীল পোর্টে যা কিছু আছে, বা 3000 যদি কিছুই না থাকে তবে।

সুতরাং আপনি যে পাস app.listen, অথবা app.set('port', ...), এবং যে তোলে আপনার সার্ভারে পরিবেশ কি পোর্টে শোনার জন্য থেকে একটি প্যারামিটার গ্রহণ করতে সক্ষম হবেন।

আপনি যদি 3000হার্ড-কোডেড পাস করেন তবে আপনি app.listen()সর্বদা 3000 বন্দরটিতে শুনছেন, যা আপনার সার্ভারটি চালাচ্ছেন এমন পরিবেশের প্রয়োজনীয়তা এবং প্রয়োজনীয়তার উপর নির্ভর করে যা আপনার পক্ষে কেবল বা আপনার পক্ষে হতে পারে।


74
  • আপনি যদি চালনা করেন তবে node index.jsনোড ব্যবহার করবে3000

  • আপনি যদি চালনা করেন তবে PORT=4444 node index.jsনোড এই উদাহরণের সাথে process.env.PORTসমান ব্যবহার করবে 4444sudo1024 এর নীচে পোর্টগুলির সাথে চালান ।


13
আপনি যদি উইন্ডোজ মেশিনে এটি ব্যবহার করে থাকেন, প্রথমে আপনাকে পোর্ট ভেরিয়েবলটি "সেট পোর্ট = 3300" হিসাবে সেট করতে হবে, তারপরে পরবর্তী কমান্ডে, আপনি যদি নোড সার্ভার.জেগুলি চালনা করেন তবে এটি 3000 এর পরিবর্তে 3300 হিসাবে পোর্ট নিতে হবে ।
আকাশ জৈন

35

অন্য অ্যাপ্লিকেশনটিতে (যেমন হেরোকু, নোডিজিটসু এবং এডাব্লুএস) আপনার অ্যাপ্লিকেশনটি হোস্ট করার সময় আপনার হোস্টটি স্বাধীনভাবে আপনার process.env.PORTজন্য পরিবর্তনশীলটি কনফিগার করতে পারে ; সর্বোপরি, আপনার স্ক্রিপ্ট তাদের পরিবেশে চলে।

অ্যামাজনের ইলাস্টিক বিয়ানস্টালক এটি করে। যদি আপনি 3000 আপনার স্থিতিশীল সেটিংসের 3000পরিবর্তে স্থিতিশীল বন্দরের মান সেট করার চেষ্টা process.env.PORT || 3000করেন তবে আপনার অ্যাপ্লিকেশনটির ফলে 500 গেটওয়ে ত্রুটি হবে কারণ অ্যামাজন আপনার জন্য পোর্টটি কনফিগার করছে।

এটি একটি সর্বনিম্ন এক্সপ্রেস অ্যাপ্লিকেশন যা অ্যামাজনের ইলাস্টিক বিয়ানস্টালকে স্থাপন করবে:

var express = require('express');
var app = express();

app.get('/', function (req, res) {
  res.send('Hello World!');
});

// use port 3000 unless there exists a preconfigured port
var port = process.env.port || 3000;

app.listen(port);

1
ES6 সমর্থনকারী নোড.জেসের মধ্যে আপনি আরও খাটো লিখতে পারেন:const {PORT = 3000} = process.env
জুলিয়ান

1
@PA। কোনও পিএ নয়, যদি প্রক্রিয়া.এনভি.পোর্টটি উত্পাদন পরিবেশে পাওয়া যায় তবে পোর্ট এর মান পাবে। মনে রাখবেন যে এই অপারেশনটি বাম থেকে ডানে পড়তে হবে এবং যদি কোনও উপলভ্য মান হয় তবে তা বন্ধ হবে।
হোকো_

11

কিছু পরিস্থিতিতে, portশুধুমাত্র পরিবেশ দ্বারা মনোনীত করা যেতে পারে এবং একটি ব্যবহারকারী পরিবেশে পরিবর্তনশীল সংরক্ষণ করা হয়। নীচে নোড.জেএস অ্যাপস এর সাথে কীভাবে কাজ করে তা হল।

processবস্তুর একটি বিশ্বব্যাপী যে, ওভার সম্পর্কে তথ্য, এবং নিয়ন্ত্রণ প্রদান করে বর্তমান Node.js প্রক্রিয়া। বৈশ্বিক হিসাবে, এটি সর্বদা ব্যবহার না করে নোড.জেএস অ্যাপ্লিকেশনগুলিতে উপলব্ধ require()

process.envসম্পত্তি একটি বস্তু ব্যবহারকারী পরিবেশ ধারণকারী ফেরৎ।

এই বস্তুর একটি উদাহরণ দেখে মনে হচ্ছে:

{
  TERM: 'xterm-256color',
  SHELL: '/usr/local/bin/bash',
  USER: 'maciej',
  PATH: '~/.bin/:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin',
  PWD: '/Users/maciej',
  EDITOR: 'vim',
  SHLVL: '1',
  HOME: '/Users/maciej',
  LOGNAME: 'maciej',
  _: '/usr/local/bin/node'
}

উদাহরণ স্বরূপ,

টার্মিনাল : স্থায়ীভাবে নয়, একটি নতুন ব্যবহারকারী পরিবেশ পরিবর্তনশীল সেট করুন

export MY_TEST_PORT=9999

app.js : নোড অ্যাপ থেকে নতুন পরিবেশের পরিবর্তনশীল পড়ুন

console.log(process.env.MY_TEST_PORT)

টার্মিনাল : নোড অ্যাপটি চালান এবং মান পান

$ node app.js
9999
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.