এক্সপ্রেস 4.x এ "./bin/www" কী করে?


157

আমি কেবলমাত্র আমার নোড.জেএস অ্যাপে এক্সপ্রেস 4.0.০ সম্পর্কে শিখতে শুরু করেছি এবং আমি খুঁজে পেয়েছি যে এটি ./bin/wwwফাইল তৈরি করেছে , যার উপর কেবলমাত্র অ্যাপ্লিকেশন সার্ভার এবং পোর্ট সেটিংস লিখিত রয়েছে এবং মিডলওয়্যার এবং রাউটিংয়ের মতো অন্য সমস্ত কিছুই ./app.jsফাইলে সংজ্ঞায়িত করা হয়েছে ।

যাইহোক, আমি নিশ্চিত না এটি কী ./bin/wwwকরে। আমি এক্সপ্রেস 3.x ব্যবহার করেছি এবং আমি সর্বদা অভিন্ন ./app.jsফাইলে সার্ভার এবং পোর্ট সেটিংস পাশাপাশি রাউটিং এবং মিডলওয়্যার সংজ্ঞায়িত করেছি এবং এর সাথে আমার নোড অ্যাপটি চালু করেছি node app.js। সুতরাং ব্যবহার করার ./bin/wwwকি লাভ? এটি কি অন্যদের থেকে সার্ভার এবং পোর্ট সংজ্ঞাটি পৃথক করে?

এখনই, আমি যখন এক্সপ্রেস-জেনারেটর ব্যবহার করে প্যাকেজটি তৈরি করি, তখন package.jsonনিম্নলিখিত সংজ্ঞাটি অন্তর্ভুক্ত করে:

"scripts": {
    "start": "node ./bin/www"
}

যাইহোক, আমি ভাবছি কিনা আমি লঞ্চ উচিত ব্যবহার করে আমার অ্যাপ্লিকেশন node ./bin/www, অথবা npm start। আমার অ্যাপ্লিকেশন শুরু করতে আমার কোন আদেশটি চালানো উচিত?

এবং এছাড়াও, আমি যখন আমার অ্যাপ্লিকেশনটিকে হিরকুতে স্থাপন করি, তখন ফাইলটিতে আমার কী লেখা উচিত Procfile? কি web: node app.jsযথেষ্ট?


1
সেরা দেখুন ব্যাখ্যাstackoverflow.com/a/36638353/984471
মনোহর রেড্ডি Poreddy

উত্তর:


131

ইন এক্সপ্রেস 3.0 , আপনি সাধারণত ব্যবহার করেন app.configure()(অথবা app.use()) প্রয়োজন মিডলওয়্যার আপনার যা দরকার সেট আপ করার জন্য। আপনার নির্দিষ্ট করা মিডলওয়্যারগুলি এক্সপ্রেস 3.0 এর সাথে একত্রিত হয়।

উদাহরণ:

var express = require('express');
var routes = require('./routes');
var user = require('./routes/user');
var http = require('http');
var path = require('path');

var app = express();

// all environments
app.set('port', process.env.PORT || 3000);
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.compress());
app.use(express.json());
app.use(express.urlencoded());
app.use(express.methodOverride());

ইন এক্সপ্রেস 4.0 অবশ্য সব মিডলওয়্যার তাই মুছে হয়েছে যে, তারা বজায় রেখেছে এবং কোর এক্সপ্রেস (স্ট্যাটিক মিডলওয়্যার ব্যতীত) থেকে স্বাধীনভাবে আপডেট করা যাবে, এইভাবে তারা আলাদাভাবে (তুমি কি দেখতে নামক করা প্রয়োজন app.js)।

bin/ডিরেক্টরি একটি অবস্থান যেখানে আপনি আপনার বিভিন্ন বর্ণনা করতে পারেন হিসেবে কাজ করে সূচনার স্ক্রিপ্টwwwওয়েব সার্ভার যেমন দ্রুতগামী অ্যাপ্লিকেশানটিকে চালু করতে একটি উদাহরণ।

শেষ পর্যন্ত, আপনার মতো বিভিন্ন স্ক্রিপ্ট থাকতে পারে test , stopঅথবা restart, ইত্যাদি এই কাঠামো রয়ে মধ্যে সবকিছু প্রস্ততি নিচ্ছ ছাড়া, আপনি বিভিন্ন প্রারম্ভে কনফিগারেশনের করতে সক্ষম হবেন app.js

আপনার এক্সপ্রেস অ্যাপ্লিকেশন শুরু করার সঠিক উপায় হ'ল:

npm start

হিরোকুতে একটি এক্সপ্রেস 4.x অ্যাপ স্থাপন করতে, এটিতে আপনার যুক্ত করুনProcfile :

web: npm start

অথবা আপনি যদি নিজের মধ্যে প্রারম্ভিক স্ক্রিপ্টটি ব্যবহার করতে পারেন তবে package.jsonহিরকু স্বয়ংক্রিয়ভাবে এটি ব্যবহার করবে, এখানে আরও পড়ুন

"scripts": {
    "start": "node ./bin/www",
}

6
ধন্যবাদ। শেষ দুটি অনুচ্ছেদে আপনার দুর্দান্ত ব্যাখ্যার সাথে, অবশেষে আমি পেয়েছি কী ব্যবহার করার পয়েন্ট www। আমি নিশ্চিত না কেন কেন এর নামকরণ করা হয়েছে - সম্ভবত ওয়ার্ল্ড ওয়াইড ওয়েবের নামানুসারে?
ব্লেজার্ড

1
@ নিকোলাস এস। এক্সু এক্সপ্রেসজেএস-এর গিতুব রেপো github.com/visionmedia/express এ , দ্রুত শুরু বিভাগে স্ক্রোল করুন
অ্যান্ডি

4
@ কেন "বিন", যদিও? আমি বাইনারি এক্সিকিউটেবলের সাথে এটি যুক্ত করি।
নিয়মিতমেক

2
@ নিয়মিত আমি অনুমান করি, এর অর্থ 'এক্সিকিউটেবল' স্ক্রিপ্ট (লিনাক্সের পরিবেশের মতো) এরও অর্থ হতে পারে
অ্যান্ডি

2
@ বিবাহিত হ্যাঁ, এটি অনেক সময় আগে মনে হয় এটি কার্যকর কার্যকর কিছু বোঝাতে বিকশিত হয়েছিল। পাইথন, পার্ল এবং সাধারণভাবে ইউনিক্স / লিনাক্সে সাধারণ।
নিয়মিতমেকে

10

এক্সপ্রেস ৩. এক্স এর মতো নোড অ্যাপ্লিকেশনগুলি অ-মানক স্টার্টআপ ফাইলগুলি ব্যবহার করে app.jsতবে এটি চালানো ভুল ফাইল।

package.json হয়েছে

   "scripts": {
     "start": "node ./bin/www"
   }

যা সূচনা কমান্ড লাইনটি বর্ণনা করে। এটি অ-তুচ্ছ কারণ কারণ এটিতে একটি সম্পূর্ণ কমান্ড লাইন রয়েছে এবং এটি কেবল স্টার্টার ফাইলের পথ নয়।


আপনি কি আমাকে এই প্রশ্নের উত্তর দিতে সাহায্য করতে পারেন? ধন্যবাদ!
নিকোলাস এস এক্সু

7
কেন তাকে বিন বলা হয়? এটিতে বাইনারি থাকে না। । ।
কিনার্ড হকেনহুল

2

যদি আপনি দ্রুতগামী-জেনারেটর ব্যবহার করছেন, শুধু আপনার স্থানীয় ফাইল তাকান, ./bin, আছে www./bin ফাইল ভিতরে। সুতরাং আপনি যখন রান করবেন তখন node ./bin/wwwনোড.জেএস wwwফাইলের কোডটি কার্যকর করবে । অভিনব কিছু না।


এবং আপনি যদি অ্যাজুরে অ্যাপ্লিকেশন পরিষেবাটিতে নিযুক্ত করছেন, আপনাকে ওয়েব ডকুমেন্টটি তৈরি করতে হবে এবং বিন / www এর সাথে সমস্ত সূচক.জেগুলি প্রতিস্থাপন করতে হবে, নথির অনুরূপ gist.github.com/rseroter/79ad73f5e6e20b029f765ca8b34f4fad
হান্না

1

উইন্ডোজে, এই কমান্ডটি ব্যবহার করুন:

DEBUG = myapp সেট করুন: * & npm শুরু করুন অ্যাপ্লিকেশনটি অ্যাক্সেস করতে আপনার ব্রাউজারে http: // লোকালহোস্ট: 3000 / লোড করুন।


4
তাই আপনাকে স্বাগতম! আমি মনে করি না যে এটি সত্যই হাতে প্রশ্নের উত্তর দেয়। আসল পোস্টার যা জিজ্ঞাসা করছে তা পুরোপুরি বুঝতে দয়া করে প্রশ্নটি পুনরায় পড়ুন।
জেক

0

উপরোক্ত সবাই ভাল উত্তর দিয়েছেন। তবে যদি আপনি ব্যবহার করতে চানnode app.js কেবল এক্সপ্রেস ৩. * সংস্করণ । আপনি নীচে অনুসরণ করতে পারেন:

কারণ এক্সপ্রেস 4 জেনারেটরের দ্বারা নির্মিত অ্যাপ.জেএস ফাইলটি এখন নোড.জেএস মডিউল , এটি আর অ্যাপ্লিকেশন হিসাবে স্বাধীনভাবে শুরু করা যাবে না (যদি আপনি কোডটি পরিবর্তন না করেন)। মডিউলটি অবশ্যই একটি নোড.জেএস ফাইলে লোড করা উচিত এবং নোড.জেএস ফাইলের মাধ্যমে শুরু করা উচিত। নোড.জেএস ফাইলটি এই ক্ষেত্রে ./bin/www। আরও তথ্যের জন্য , সরকারী ডকুমেন্টেশন দেখুন

এক্সপ্রেস অ্যাপ তৈরি বা অ্যাপ্লিকেশন শুরু করার জন্য বিন ডিরেক্টরি বা এক্সটেনশনহীন www ফাইল দুটিই বাধ্যতামূলক নয়। এগুলি কেবল জেনারেটরের দেওয়া পরামর্শ, তাই আপনার প্রয়োজন অনুসারে এগুলি সংশোধন করতে দ্বিধা বোধ করুন।

Www ডিরেক্টরি থেকে মুক্তি পেতে এবং জিনিসগুলিকে "এক্সপ্রেস 3 ওয়ে" রাখতে, মডেল.এক্সপোর্টস = অ্যাপ্লিকেশনটি বলে যে লাইনটি মুছুন; app.js ফাইলের শেষে, তারপরে নিম্নলিখিত কোডটি পেস্ট করুন:

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

app.listen(app.get('port'), () => {
  console.log(`Express server listening on port ${app.get('port')}`);
})

এর পরে, পরিবর্তন "start": "node ./bin/www"মধ্যে package.json ফাইল। যেহেতু, আপনি এখন ./bin/www এর কার্যকারিতাটি app.js- এ ফিরে গেছেন। এখন, "start": "node app.js"আপনার এক্সপ্রেস অ্যাপ্লিকেশন চালানোর জন্য ব্যবহার শুরু করুন।


-1

web: node ./bin/www এটি প্রোফাইলে রাখুন এবং এটি দিয়ে কাজ করে কিনা তা পরীক্ষা করুন foreman start। অ্যাপটি 5000 পোর্টে পাওয়া উচিত

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