একটি সাধারণ ওয়েব সার্ভার হিসাবে নোড.জেএস ব্যবহার করা


1102

আমি খুব সাধারণ এইচটিটিপি সার্ভার চালাতে চাই। প্রতিটি জিইটি অনুরোধটি এটিকে পরিবেশন করা example.comউচিত index.htmlতবে নিয়মিত এইচটিএমএল পৃষ্ঠা হিসাবে (যেমন আপনি যখন সাধারণ ওয়েব পৃষ্ঠাগুলি পড়েন তখন একই অভিজ্ঞতা)।

নীচের কোডটি ব্যবহার করে, এর সামগ্রীটি পড়তে পারি index.html। আমি কীভাবে index.htmlএকটি নিয়মিত ওয়েব পৃষ্ঠা হিসাবে পরিবেশন করব ?

var http = require('http');
var fs = require('fs');
var index = fs.readFileSync('index.html');

http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end(index);
}).listen(9615);

নীচে একটি পরামর্শ জটিল এবং getপ্রতিটি সংস্থান (সিএসএস, জাভাস্ক্রিপ্ট, চিত্র) ফাইলটি আমি ব্যবহার করতে চাই তার জন্য একটি লাইন লিখতে হবে।

কিছু চিত্র, সিএসএস এবং জাভাস্ক্রিপ্ট সহ আমি কীভাবে একটি একক এইচটিএমএল পৃষ্ঠা পরিবেশন করতে পারি?


21
এনপিএম মডিউল "সংযোগ" দেখুন। এটি এ জাতীয় প্রাথমিক কার্যকারিতা সরবরাহ করে এবং এটি অনেক সেটআপ এবং অন্যান্য প্যাকেজগুলির ভিত্তি।
মারি

5
আপনার সমাধানটি উত্তর হিসাবে রাখা উচিত এবং এটি সঠিক হিসাবে চিহ্নিত করা উচিত।
গ্রাহাম.রিডস

8
আমি এরিক বি Sowell দ্বারা একটি নির্ভুল সমাধান নামক খুঁজে পেতে সক্ষম ছিল নোড JS থেকে স্ট্যাটিক ফাইল পরিবেশন করছে । পুরো জিনিস পড়ুন। অত্যন্ত বাঞ্ছনীয়.
আইডোফির

1
আমি লিখেছি এমন একটি মডিউল দেখুন যা ক্যাচেমির বলে। এটি স্বয়ংক্রিয়ভাবে আপনার সমস্ত সংস্থানকে ক্যাশে করে। github.com/topcloud/cachemere
জন

উত্তর:


991

সরলতম নোড.জেএস সার্ভারটি কেবল:

$ npm install http-server -g

এখন আপনি নিম্নলিখিত কমান্ডগুলির মাধ্যমে একটি সার্ভার চালাতে পারেন:

$ cd MyApp

$ http-server

আপনি যদি এনপিএম 5.2.0 বা নতুন ব্যবহার করে থাকেন তবে আপনি http-serverএটি ইনস্টল না করে ব্যবহার করতে পারেন npx। এটি উত্পাদন ব্যবহারের জন্য প্রস্তাবিত নয় তবে লোকালহোস্টে চালিত সার্ভারটি দ্রুত পাওয়ার একটি দুর্দান্ত উপায়।

$ npx http-server

অথবা, আপনি এটি ব্যবহার করে দেখতে পারেন, যা আপনার ওয়েব ব্রাউজারটি খোলে এবং সিওআরএস অনুরোধগুলিকে সক্ষম করে:

$ http-server -o --cors

আরও বিকল্পের জন্য http-server, গিটহাবের জন্য ডকুমেন্টেশন চেক আউট করুন বা রান করুন:

$ http-server --help

নোডজিৎসুতে প্রচুর অন্যান্য দুর্দান্ত বৈশিষ্ট্য এবং মস্তিষ্ক-মৃত-সহজ স্থাপনা।

বৈশিষ্ট্যযুক্ত কাঁটাচামচ

অবশ্যই, আপনি সহজেই নিজের কাঁটাচামচ দিয়ে বৈশিষ্ট্যগুলি শীর্ষে রাখতে পারেন। আপনি দেখতে পাবেন এটি ইতিমধ্যে এই প্রকল্পের বিদ্যমান 800+ কাঁটাচামড়ার একটিতে সম্পন্ন হয়েছে:

হালকা সার্ভার: একটি অটো রিফ্রেশ বিকল্প

একটা চমৎকার বিকল্প http-serverনেই light-server। এটি ফাইল দেখার এবং স্বতঃ-রিফ্রেশ এবং অন্যান্য অনেক বৈশিষ্ট্য সমর্থন করে।

$ npm install -g light-server 
$ light-server

উইন্ডোজ এক্সপ্লোরারে আপনার ডিরেক্টরি প্রসঙ্গ মেনুতে যুক্ত করুন

 reg.exe add HKCR\Directory\shell\LightServer\command /ve /t REG_EXPAND_SZ /f /d "\"C:\nodejs\light-server.cmd\" \"-o\" \"-s\" \"%V\""

সাধারণ JSON REST সার্ভার

প্রোটোটাইপ প্রকল্পের জন্য যদি আপনাকে একটি সাধারণ আরএসটি সার্ভার তৈরি করতে হয় তবে জাসন-সার্ভারটি আপনি যা খুঁজছেন তা হতে পারে।

স্বতঃ রিফ্রেশ সম্পাদকগণ

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

আমি ভিজ্যুয়াল স্টুডিও কোড সহ লাইভ সার্ভার ব্যবহার করি ।

ওপেন সোর্স টেক্সট এডিটর বন্ধনী একটি NodeJS স্ট্যাটিক ওয়েব সার্ভার অন্তর্ভুক্ত করা হয়েছে। বন্ধনীগুলিতে কেবল কোনও HTML ফাইল খুলুন, " লাইভ পূর্বরূপ " টিপুন এবং এটি একটি স্ট্যাটিক সার্ভার শুরু করে এবং পৃষ্ঠায় আপনার ব্রাউজারটি খুলবে। আপনি যখনই এইচটিএমএল ফাইল সম্পাদনা এবং সংরক্ষণ করবেন তখন ব্রাউজারটি স্বয়ংক্রিয় রিফ্রেশ করবে। অভিযোজক ওয়েব সাইটগুলি পরীক্ষা করার সময় এটি বিশেষত কার্যকর। একাধিক ব্রাউজার / উইন্ডো আকার / ডিভাইসে আপনার এইচটিএমএল পৃষ্ঠাটি খুলুন। আপনার এইচটিএমএল পৃষ্ঠা সংরক্ষণ করুন এবং তাত্ক্ষণিকভাবে দেখুন যে আপনার অভিযোজিত স্টাফগুলি সমস্ত অটো রিফ্রেশ হিসাবে কাজ করছে ।

ফোনগ্যাপ বিকাশকারী

আপনি যদি একটি হাইব্রিড মোবাইল অ্যাপ্লিকেশন কোডিং করছেন , আপনি জানতে আগ্রহী হতে পারেন যে ফোনগ্যাপ টিম তাদের নতুন ফোনগ্যাপ অ্যাপের সাহায্যে এই অটো রিফ্রেশ ধারণাটি বোর্ডে নিয়েছিল । এটি একটি জেনেরিক মোবাইল অ্যাপ্লিকেশন যা বিকাশের সময় কোনও সার্ভার থেকে এইচটিএমএল 5 ফাইল লোড করতে পারে। আপনি এখন থেকে জেএস / সিএসএস / এইচটিএমএল ফাইলগুলি পরিবর্তন করছেন যদি আপনি হাইব্রিড মোবাইল অ্যাপ্লিকেশনগুলির জন্য আপনার বিকাশ চক্রের ধীর সংকলন / স্থাপন পদক্ষেপগুলি এড়াতে পারেন তবে এটি বেশ চালিত কৌশল - তারা স্ট্যাটিক নোডজেএস ওয়েব সার্ভার (রান phonegap serve) সরবরাহ করে যা ফাইলের পরিবর্তনগুলি সনাক্ত করে।

ফোনগ্যাপ + সেনচা টাচ বিকাশকারী

আমি এখন স্যাঞ্চা টাচ এবং জিকুয়েরি মোবাইল বিকাশকারীদের জন্য ফোনগ্যাপ স্ট্যাটিক সার্ভার এবং ফোনগ্যাপ বিকাশকারী অ্যাপটি ব্যাপকভাবে গ্রহণ করেছি। এ এটি পরীক্ষা করে দেখুন সেঞ্চা টাচ লাইভ । --Qr QR কোড এবং --localtunnel সমর্থন করে যা আপনার ফায়ারওয়ালের বাইরের একটি URL এ আপনার ডেস্কটপ কম্পিউটার থেকে আপনার স্ট্যাটিক সার্ভারটি প্রক্স করে! টন ব্যবহার। হাইব্রিড মোবাইল ডিভাসের জন্য প্রচুর স্পিডআপ।

কর্ডোভা + আয়নিক ফ্রেমওয়ার্ক বিকাশকারী

স্থানীয় সার্ভার এবং অটো রিফ্রেশ বৈশিষ্ট্যগুলি ionicসরঞ্জামটিতে বেক করা হয়েছে । কেবলমাত্র ionic serveআপনার অ্যাপ ফোল্ডারটি থেকে চালান run আরও ভাল ... ionic serve --labআইওএস এবং অ্যান্ড্রয়েড উভয়েরই পাশাপাশি দেখার জন্য স্বতঃ-রিফ্রেশ করার জন্য।


9
npm install live-server -g আপনি যদি একই জিনিসটি চান তবে স্বয়ংক্রিয় পুনরায় লোড সহ যখন এটি কোনও ফাইলের পরিবর্তন সনাক্ত করে

3
একটুখানি "গেটছা" -। HTTP- সার্ভার 0.0.0.0 এ সাইট পরিবেশন করতে ডিফল্ট। অতএব, আপনি স্থানীয় পরীক্ষার সার্ভিয়ার হিসাবে এটি সঠিকভাবে কাজ করতে একটি আইপি ঠিকানা নির্দিষ্ট করতে হবে:http-server -a localhost
জেসি

1
হ্যাঁ ... ০.০.০.০ এটি আপনার সমস্ত আইপি নেটওয়ার্ক ডিভাইস (ওয়াইফাই, কেবল, ব্লুটুথ) এর সমস্ত আইপিকে আবদ্ধ করবে যা কোনও সম্ভাব্য নেটওয়ার্কের জন্য খারাপ ধারণা যা আপনি সম্ভবত হ্যাক হতে পারেন। এটি অন্যাদের দেখানোর জন্য বা একই নেটওয়ার্কে আপনার মোবাইল ডিভাইসে এটি সংযুক্ত করার জন্য নিরাপদ ফায়ার ওয়ালেড নেটওয়ার্কের মধ্যে আপনার অ্যাপ্লিকেশনটিকে ডেমো করতে চাইলে এটি খুব খারাপ নয়।
টনি ও'হাগান

সত্যিই দরকারী ছোট সরঞ্জাম। আমার সার্ভারে প্রচুর নোড অ্যাপ্লিকেশন চলছে, সুতরাং আমি 8080 ব্যতীত অন্য কোনও বন্দর বেছে নিতে একটি "-p" বিকল্প যুক্ত করেছি example উদাহরণস্বরূপ: nohup http-server -p 60080 & (এটি পটভূমিতে শুরু হয় এবং আপনাকে সংযোগ বিচ্ছিন্ন করতে দেয় শেল সেশন।) আপনার অবশ্যই নিশ্চিত করা উচিত যে বন্দরটি বিশ্বের জন্য উন্মুক্ত, যেমন: আইপটিবল -I ইনপুট 1 -p টিসিপি --dport 60090 -j এসিসিপিটি (বহু লিনাক্স সিস্টেমে)
ব্লিস্টারপিন্টস

কীভাবে এটি পরিষেবা হিসাবে চালানো যায়, তাই আমি কমান্ড প্রম্পটটি বন্ধ করেও এটি ব্যবহার করতে পারি। কোনও সরঞ্জাম এই ধরণের প্রদান করে যদি এটি না হয়।
সন্দীপ বেলে

983

আপনি এর জন্য নোড.জেএস এর সাথে কানেক্ট এবং সার্ভস্ট্যাটিক ব্যবহার করতে পারেন :

  1. এনপিমের সাথে সংযুক্ত এবং পরিবেশন-স্থির ইনস্টল করুন

    $ npm install connect serve-static
  2. এই বিষয়বস্তু দিয়ে সার্ভার.জেএস ফাইল তৈরি করুন:

    var connect = require('connect');
    var serveStatic = require('serve-static');
    
    connect()
        .use(serveStatic(__dirname))
        .listen(8080, () => console.log('Server running on 8080...'));
  3. নোড.জেএস দিয়ে চালান

    $ node server.js

আপনি এখন যেতে পারেন http://localhost:8080/yourfile.html


24
ধারণা ছিল শিক্ষাগত কারণে কোনও বিদ্যমান গ্রন্থাগার ব্যবহার না করা, তবে আমি মনে করি এক্সপ্রেস ব্যবহার করা এর নিম্ন স্তরের সংস্করণ কানেক্টের চেয়ে ভাল পরামর্শ advice
আইডোফির

135
স্ট্যাটিক ফাইল পরিবেশন করা এক্সপ্রেসের অংশটি কেবল সংযোগ, সুতরাং স্থির ফাইলগুলি পরিবেশন করার জন্য এক্সপ্রেস ব্যবহার করার কারণ আমি দেখতে পাচ্ছি না। তবে হ্যাঁ, এক্সপ্রেসও কাজটি করবে।
জিয়ান মার্কো ঘেরার্ডি

7
দুর্দান্ত পরামর্শ। উপরের পদক্ষেপগুলি আমার উদ্দেশ্যগুলির জন্য খুব ভালভাবে কাজ করেছিল। জিয়ানকে ধন্যবাদ, এটি এক্সপ্রেসের লিঙ্কটি যেখানে এটি প্রকাশ করে এটি সংযোগ, এক্সপ্রেজস ডট কম এ নির্মিত হয়েছে তা এখানে প্রকাশ করা হয়েছে: এক্সপ্রেসজেজ / গাইডি। Html
জ্যাক স্টোন

10
আমার জন্য কাজ করছে না, ফলাফল GET /test.html পাওয়া যায় না। আমি __ ডিরেক্টরিটি ডিরেক্টরি নামের সাথে প্রতিস্থাপন করব?
টিমো

3
এখন, সংযোগটি সংস্করণ 3 এ পরিবর্তিত হয়েছে Therefore সুতরাং, মিকিড বর্ণিত হিসাবে পরিবেশন-স্ট্যাটিক ব্যবহার করতে হবে। আমি কানেক্ট ভি 3 এর জন্য পুরো কোড সহ অন্য একটি উত্তর পোস্ট করেছি।
টমেট

160

এই টুকরোটি দেখুন । আমি রেফারেন্সের জন্য এটি এখানে পুনরুত্পাদন করছি, তবে গিস্টটি নিয়মিত আপডেট করা হয়েছে।

নোড.জেএস স্ট্যাটিক ফাইল ওয়েব সার্ভার। কোনও ডিরেক্টরিতে সার্ভার ফায়ার করার জন্য এটি আপনার পথে রাখুন, একটি alচ্ছিক পোর্ট আর্গুমেন্ট নেয়।

var http = require("http"),
    url = require("url"),
    path = require("path"),
    fs = require("fs"),
    port = process.argv[2] || 8888;

http.createServer(function(request, response) {

  var uri = url.parse(request.url).pathname
    , filename = path.join(process.cwd(), uri);

  fs.exists(filename, function(exists) {
    if(!exists) {
      response.writeHead(404, {"Content-Type": "text/plain"});
      response.write("404 Not Found\n");
      response.end();
      return;
    }

    if (fs.statSync(filename).isDirectory()) filename += '/index.html';

    fs.readFile(filename, "binary", function(err, file) {
      if(err) {        
        response.writeHead(500, {"Content-Type": "text/plain"});
        response.write(err + "\n");
        response.end();
        return;
      }

      response.writeHead(200);
      response.write(file, "binary");
      response.end();
    });
  });
}).listen(parseInt(port, 10));

console.log("Static file server running at\n  => http://localhost:" + port + "/\nCTRL + C to shutdown");

হালনাগাদ

গিস্টটি হ'ল সিএসএস এবং জেএস ফাইলগুলি পরিচালনা করে। আমি নিজেই এটি ব্যবহার করেছি। "বাইনারি" মোডে রিড / রাইট ব্যবহার করা কোনও সমস্যা নয়। এর ঠিক অর্থ হ'ল ফাইলটি লাইব্রেরি দ্বারা পাঠ্য হিসাবে ব্যাখ্যা করা হয়নি এবং প্রতিক্রিয়াতে ফিরে আসা সামগ্রী-প্রকারের সাথে সম্পর্কিত নয়।

আপনার কোডের সমস্যাটি হ'ল আপনি সর্বদা "পাঠ্য / প্লেইন" এর একটি সামগ্রী-ধরণের ফিরে আসছেন। উপরের কোডটি কোনও সামগ্রী-প্রকার ফেরত দেয় না, তবে আপনি যদি এটি এইচটিএমএল, সিএসএস এবং জেএস এর জন্য ব্যবহার করেন তবে একটি ব্রাউজার সেগুলি সূক্ষ্মভাবে নির্ধারণ করতে পারে। কোনও বিষয়বস্তুর ধরণটি ভুলের চেয়ে ভাল নয়।

সাধারণত বিষয়বস্তুর ধরণটি আপনার ওয়েব সার্ভারের একটি কনফিগারেশন। সুতরাং আমি দুঃখিত যদি এটি আপনার সমস্যার সমাধান না করে তবে এটি আমার পক্ষে একটি সাধারণ বিকাশকারী সার্ভার হিসাবে কাজ করেছে এবং ভেবেছিল এটি অন্য কিছু লোককে সহায়তা করতে পারে। প্রতিক্রিয়াতে আপনার যদি সঠিক সামগ্রী-প্রকারের প্রয়োজন হয়, আপনার হয় স্পষ্টভাবে তাদের জোয়েটউইডলস হিসাবে স্পষ্ট করে সংজ্ঞা দিতে হবে বা সংযোগের মতো লাইব্রেরি ব্যবহার করতে হবে যা বুদ্ধিমান ডিফল্ট রয়েছে। এ সম্পর্কে দুর্দান্ত জিনিসটি হ'ল এটি সহজ এবং স্ব-অন্তর্ভুক্ত (কোনও নির্ভরতা নেই)।

তবে আমি আপনার সমস্যাটি অনুভব করি। সুতরাং এখানে সম্মিলিত সমাধান।

var http = require("http"),
    url = require("url"),
    path = require("path"),
    fs = require("fs")
    port = process.argv[2] || 8888;

http.createServer(function(request, response) {

  var uri = url.parse(request.url).pathname
    , filename = path.join(process.cwd(), uri);

  var contentTypesByExtension = {
    '.html': "text/html",
    '.css':  "text/css",
    '.js':   "text/javascript"
  };

  fs.exists(filename, function(exists) {
    if(!exists) {
      response.writeHead(404, {"Content-Type": "text/plain"});
      response.write("404 Not Found\n");
      response.end();
      return;
    }

    if (fs.statSync(filename).isDirectory()) filename += '/index.html';

    fs.readFile(filename, "binary", function(err, file) {
      if(err) {        
        response.writeHead(500, {"Content-Type": "text/plain"});
        response.write(err + "\n");
        response.end();
        return;
      }

      var headers = {};
      var contentType = contentTypesByExtension[path.extname(filename)];
      if (contentType) headers["Content-Type"] = contentType;
      response.writeHead(200, headers);
      response.write(file, "binary");
      response.end();
    });
  });
}).listen(parseInt(port, 10));

console.log("Static file server running at\n  => http://localhost:" + port + "/\nCTRL + C to shutdown");

3
এটি সত্যই "সমস্যা" সমাধান করে না। আপনি বাইনারি ফাইল হিসাবে index.html ফিরিয়ে দেন এবং আপনি সিএসএস এবং জেএস হ্যান্ডেল করেন না।
idofir

4
এটি সিএসএস এবং জেএসগুলি হ্যান্ডেল করে। এটি বাইনারি ফাইল হিসাবে index.html ফেরত দেয় না। এটি যে কোনও ফর্ম্যাটটিতেই কেবল ডিস্কের বাইরে থাকা ডেটা অনুলিপি করে more আরও ব্যাখ্যার জন্য দয়া করে আপডেট দেখুন।
জোনাথন ট্রান

কোড সহ একটি ইস্যু, এটি ফাইলের ক্ষেত্রে সংবেদনশীল, নির্দিষ্ট ফাইলগুলির ইউনিক্সে, এটি 404 দেয়
প্রদীপ

2
মনে রাখবেন যে "path.exists এবং path.existsSync এখন অবচিত করা হয়েছে Please অনুগ্রহ করে fs.exists এবং fs.existsSync ব্যবহার করুন।" stackoverflow.com/a/5008295/259
ডেভিড সাইকেস

3
নোট যে fs.exists()এখন অবচয় হয়। fs.stat()রেসের শর্ত তৈরি করার পরিবর্তে ত্রুটিটি ধরুন ।
ম্যাট

100

আপনার এক্সপ্রেসের দরকার নেই। আপনার সংযোগের দরকার নেই। নোড.জেএস নাগরিকভাবে পোস্ট করে। আপনাকে যা করতে হবে তা হ'ল অনুরোধের উপর নির্ভর করে একটি ফাইল ফেরত দেওয়া:

var http = require('http')
var url = require('url')
var fs = require('fs')

http.createServer(function (request, response) {
    var requestUrl = url.parse(request.url)    
    response.writeHead(200)
    fs.createReadStream(requestUrl.pathname).pipe(response)  // do NOT use fs's sync methods ANYWHERE on production (e.g readFileSync) 
}).listen(9615)    

আরও পূর্ণ উদাহরণ যা নিশ্চিত করে যে অনুরোধগুলি বেস-ডিরেক্টরিের নীচে ফাইলগুলিতে অ্যাক্সেস করতে পারে না এবং সঠিক ত্রুটি পরিচালনা করে:

var http = require('http')
var url = require('url')
var fs = require('fs')
var path = require('path')
var baseDirectory = __dirname   // or whatever base directory you want

var port = 9615

http.createServer(function (request, response) {
    try {
        var requestUrl = url.parse(request.url)

        // need to use path.normalize so people can't access directories underneath baseDirectory
        var fsPath = baseDirectory+path.normalize(requestUrl.pathname)

        var fileStream = fs.createReadStream(fsPath)
        fileStream.pipe(response)
        fileStream.on('open', function() {
             response.writeHead(200)
        })
        fileStream.on('error',function(e) {
             response.writeHead(404)     // assume the file doesn't exist
             response.end()
        })
   } catch(e) {
        response.writeHead(500)
        response.end()     // end the response so browsers don't hang
        console.log(e.stack)
   }
}).listen(port)

console.log("listening on port "+port)

3
যদি আমি ভুল না হয়ে থাকি তবে এই সমাধানটি এনকোডিং প্রকারের যত্ন নেয় না তাই HTML পৃষ্ঠা এবং চিত্রগুলির জন্য অনুরোধগুলি একই এনকোডিং পাবে get তাই না?
আইডোফির

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

1
@ রাস্টার আপনার সাধারণ কিছু প্রয়োজন হবে না - সহজভাবে node thisfile.js। এটি চলবে, নতুন সংযোগের জন্য শুনবে এবং নতুন ফলাফলগুলি ফিরে আসবে, যতক্ষণ না এ। এটি সিগন্যাল দ্বারা বন্ধ হয়ে যায়, বা বি। কিছু ক্রেজি ত্রুটি কোনওভাবে প্রোগ্রামের সমাপ্তি ঘটায়।
বিটি

1
@ রাস্টার কিছু খ্যাতির আরও একটি ডিমনাইজার পাওয়া গেছে github.com/Unitech/pm2
ট্র্যাভেলিং ম্যান

1
আমি এই উত্তরটি সবচেয়ে ভাল পছন্দ করি, তবে দুটি বিষয় রয়েছে: 1) এটি 200 ফিরিয়ে দেয় যখন 404 ফেরত আসা উচিত; ঠিক করতে আমি 'ওপেন' কলব্যাকের ভিতরে লিখনহিড (200) কল করি 2) যদি কোনও ত্রুটি থাকে তবে সকেটটি খোলা রেখে দেওয়া হয়; ঠিক করার জন্য আমি 'ত্রুটি' কলব্যাকে প্রতিক্রিয়া.ডেস্ট্রয় () কল করি।
পল ব্রান্নান

70

আমি মনে করি আপনি এখন যে অংশটি হারিয়েছেন তা হ'ল আপনি যা পাঠাচ্ছেন:

Content-Type: text/plain

আপনি যদি কোনও ওয়েব ব্রাউজার এইচটিএমএল রেন্ডার করতে চান তবে আপনার এটি পরিবর্তন করা উচিত:

Content-Type: text/html

দ্রুত উত্তর দেওয়ার জন্য ধন্যবাদ. পৃষ্ঠাটি এখন লোড হয় তবে CSS ছাড়াই। সিএসএস এবং জেএস লোড সহ আমি কীভাবে একটি মানক এইচটিএমএল পৃষ্ঠা পেতে পারি?
আইডোফির

20
আপনাকে সেই সার্ভারটি প্রসারিত করা শুরু করতে হবে। এই মুহুর্তে এটি কেবল সূচিপত্র। Html কীভাবে পরিবেশন করতে হয় তা জানতে - আপনার নিজের যথাযথ মাইম টাইমগুলি সহ এখনই কীভাবে foo.css এবং foo.js পরিবেশন করা যায় তা শিখানো দরকার।
ক্লি

1
আপনি যদি স্ট্যাটিক ফাইলগুলি পরিবেশন করতে না চান তবে আপনি আপনার সিএসএসকে একটি <style>ট্যাগে ফেলে দিতে পারেন ।
কিথ

1
নয় বছর পরে, এটি সত্যই সঠিক উত্তর হিসাবে গ্রহণ করা উচিত।
rooch84

46

পদক্ষেপ 1 (কমান্ড প্রম্প্টের ভিতরে [আমি আশা করি আপনি আপনার ফোল্ডারে সিডি করেছেন]): npm install express

পদক্ষেপ 2: একটি ফাইল সার্ভার.js তৈরি করুন

var fs = require("fs");
var host = "127.0.0.1";
var port = 1337;
var express = require("express");

var app = express();
app.use(express.static(__dirname + "/public")); //use static files in ROOT/public folder

app.get("/", function(request, response){ //root dir
    response.send("Hello!!");
});

app.listen(port, host);

দয়া করে নোট করুন, আপনারও ওয়াচফিলে যোগ করা উচিত (বা নোডমন ব্যবহার করুন)। উপরের কোডটি কেবল একটি সাধারণ সংযোগ সার্ভারের জন্য।

পদক্ষেপ 3: node server.jsবাnodemon server.js

আপনি কেবল হোস্ট সিম্পল এইচটিটিপি সার্ভার চাইলে এখন আরও সহজ পদ্ধতি রয়েছে। npm install -g http-server

এবং আমাদের ডিরেক্টরি খুলুন এবং টাইপ করুন http-server

https://www.npmjs.org/package/http-server


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

@ বিজয় হ্যাঁ অনেক উপায় আছে। আপনার আসল উদ্দেশ্য বা লক্ষ্য কী, আমি আপনাকে সহায়তা করতে পারি
স্টিল

@ স্টিল আমি কমান্ড প্রম্পটে নোড সার্ভার না দিয়ে স্বয়ংক্রিয়ভাবে সার্ভার শুরু করতে চাই। এটি আমার প্রয়োজনীয়তা হ'ল আপনি কি আমাকে কিছু উদাহরণ বলতে পারেন
বিনোথ

আপনাকে থট ওয়ার্কস জিও এর মতো কিছু সরঞ্জাম ব্যবহার করতে হবে যা ব্রাউজারের একটি ক্লিক থেকে টার্মিনাল কমান্ডগুলি কার্যকর করতে পারে।
স্টিল

32

দ্রুত উপায়:

var express = require('express');
var app = express();
app.use('/', express.static(__dirname + '/../public')); // ← adjust
app.listen(3000, function() { console.log('listening'); });

তোমার রাস্তা:

var http = require('http');
var fs = require('fs');

http.createServer(function (req, res) {
    console.dir(req.url);

    // will get you  '/' or 'index.html' or 'css/styles.css' ...
    // • you need to isolate extension
    // • have a small mimetype lookup array/object
    // • only there and then reading the file
    // •  delivering it after setting the right content type

    res.writeHead(200, {'Content-Type': 'text/html'});

    res.end('ok');
}).listen(3001);

19

একটি স্যুইচ বিবৃতি নিয়ে কাজ করার পরিবর্তে, আমি মনে করি কোনও অভিধান থেকে বিষয়বস্তুর ধরণটি অনুসন্ধান করা আরও সুন্দর:

var contentTypesByExtension = {
    'html': "text/html",
    'js':   "text/javascript"
};

...

    var contentType = contentTypesByExtension[fileExtension] || 'text/plain';

হ্যাঁ, এরিক বি সোয়েল ব্যবহার করা "স্যুইচ" সমাধানের চেয়ে আরও মার্জিত দেখায় (নির্বাচিত উত্তর দেখুন)। ধন্যবাদ।
আইডোফির

এই উত্তরটি পুরোপুরি প্রসঙ্গে নয় ... এটি এই মন্তব্যের মধ্যে এই লিঙ্কটি উল্লেখ করে - স্ট্যাকওভারফ্লো / প্রশ্ন / 6084360/… (হ্যাঁ, যাই হোক না কেন, ইন্টারনেট ভাঙা হয়েছে)
মার্স রবার্টসন

15

এটি মূলত সংযুক্ত সংস্করণ 3 এর জন্য গৃহীত উত্তরের একটি আপডেট সংস্করণ:

var connect = require('connect');
var serveStatic = require('serve-static');

var app = connect();

app.use(serveStatic(__dirname, {'index': ['index.html']}));
app.listen(3000);

আমি একটি ডিফল্ট বিকল্পও যুক্ত করেছি যাতে সূচিপত্র। Html একটি ডিফল্ট হিসাবে পরিবেশন করা হয়।


13

সাধারণ সার্ভার চালানোর জন্য আপনাকে কোনও এনপিএম মডিউল ব্যবহার করার দরকার নেই, নোডের জন্য " এনপিএম ফ্রি সার্ভার " নামে একটি খুব ছোট লাইব্রেরি রয়েছে :

50 টি কোডের লাইন, আপনি যদি কোনও ফাইল বা ফোল্ডারটির জন্য অনুরোধ করছেন তবে আউটপুটগুলি এবং যদি কাজ না করে তবে এটি একটি লাল বা সবুজ রঙ দেয়। আকারে 1KB এর চেয়ে কম (মিনিডযুক্ত)।


দারুণ পছন্দ. এইচটিএমএল, সিএসএস, জেএস এবং চিত্র সরবরাহ করে। ডিবাগিংয়ের জন্য দুর্দান্ত। আপনার সার্ভার.জেএস এর জন্য ঠিক এই কোডটি বিকল্প করুন।
পলারিস

2
আমি আরও উচ্চতর সংযোজন করতে পারতাম! এটা অসাধারণ! আমি ডিস ফোল্ডার var filename = path.join(process.cwd() + '/dist/', uri); থেকে সার্ভারে ছোট পরিবর্তন করেছি । আমি কোডটি করা এবং এটি ঠিকঠাক কাজ করছে যখন আমি টাইপserver.jsnpm start
জন Henckel

কীভাবে এটি পরিষেবা হিসাবে চালানো যায়, তাই আমি কমান্ড প্রম্পটটি বন্ধ করেও এটি ব্যবহার করতে পারি। কোনও সরঞ্জাম এই ধরণের প্রদান করে যদি এটি না হয়।
সন্দীপ বেলে

13

আপনি যদি পিসিতে নোড ইনস্টল করেন তবে সম্ভবত আপনার এনপিএম রয়েছে, যদি আপনার নোডজেএস স্টাফের প্রয়োজন না হয় তবে আপনি এর জন্য পরিবেশন প্যাকেজটি ব্যবহার করতে পারেন :

1 - আপনার পিসিতে প্যাকেজটি ইনস্টল করুন:

npm install -g serve

2 - আপনার স্ট্যাটিক ফোল্ডার পরিবেশন করুন:

serve <path> 
d:> serve d:\StaticSite

এটি আপনাকে দেখায় যে আপনার স্ট্যাটিক ফোল্ডারটি কোন বন্দরটি পরিবেশন করা হচ্ছে, কেবল হোস্টের মতো নেভিগেট করুন যেমন:

http://localhost:3000

কীভাবে এটি পরিষেবা হিসাবে চালানো যায়, তাই আমি কমান্ড প্রম্পটটি বন্ধ করেও এটি ব্যবহার করতে পারি। কোনও সরঞ্জাম এই ধরণের প্রদান করে যদি এটি না হয়।
সন্দীপ বেলে

এটি গ্রহণযোগ্য উত্তর হওয়া উচিত। কারণ এটি সবচেয়ে সহজ এবং এটি বাক্সের বাইরে কাজ করে। সুতরাং আপনি যদি কেবল পথ ছাড়াই পরিবেশন করেন তবে এটি বর্তমান ফোল্ডার (যেখানে আপনার আগে সিডি-এড রয়েছে) থেকে সার্ভারটি চলবে।
Рајачић Рајачић

9

আমি এনপিএম এ একটি আকর্ষণীয় লাইব্রেরি পেয়েছি যা আপনার কিছুটা কার্যকর হতে পারে। একে মাইম ( npm install mimeবা।) বলা হয় https://github.com/broofa/node-mime ) বলা হয় এবং এটি কোনও ফাইলের মাইম প্রকার নির্ধারণ করতে পারে। এটি ব্যবহার করে আমি যে ওয়েবਸਰভারটি লিখেছিলাম তার উদাহরণ এখানে রয়েছে:

var mime = require("mime"),http = require("http"),fs = require("fs");
http.createServer(function (req, resp) {
path  = unescape(__dirname + req.url)
var code = 200
 if(fs.existsSync(path)) {
    if(fs.lstatSync(path).isDirectory()) {
        if(fs.existsSync(path+"index.html")) {
        path += "index.html"
        } else {
            code = 403
            resp.writeHead(code, {"Content-Type": "text/plain"});
            resp.end(code+" "+http.STATUS_CODES[code]+" "+req.url);
        }
    }
    resp.writeHead(code, {"Content-Type": mime.lookup(path)})
    fs.readFile(path, function (e, r) {
    resp.end(r);

})
} else {
    code = 404
    resp.writeHead(code, {"Content-Type":"text/plain"});
    resp.end(code+" "+http.STATUS_CODES[code]+" "+req.url);
}
console.log("GET "+code+" "+http.STATUS_CODES[code]+" "+req.url)
}).listen(9000,"localhost");
console.log("Listening at http://localhost:9000")

এটি যে কোনও নিয়মিত পাঠ্য বা চিত্রের ফাইল পরিবেশন করবে (.html, .css, .js, .pdf, .jpg, .png, .m4a এবং .mp3) আমি যে এক্সটেনশানগুলি পরীক্ষা করেছি তা কিন্তু এটি তত্ত্বের জন্য এটি সমস্ত কিছুর জন্য কাজ করা উচিত)

বিকাশকারী নোটস

এটির সাথে আমি যে আউটপুটটি পেয়েছি তার উদাহরণ এখানে:

Listening at http://localhost:9000
GET 200 OK /cloud
GET 404 Not Found /cloud/favicon.ico
GET 200 OK /cloud/icon.png
GET 200 OK /
GET 200 OK /501.png
GET 200 OK /cloud/manifest.json
GET 200 OK /config.log
GET 200 OK /export1.png
GET 200 OK /Chrome3DGlasses.pdf
GET 200 OK /cloud
GET 200 OK /-1
GET 200 OK /Delta-Vs_for_inner_Solar_System.svg

unescapeপথের নির্মাণে ফাংশনটি লক্ষ্য করুন । এটি ফাঁকা স্থান এবং এনকোডযুক্ত অক্ষর সহ ফাইলের নামের জন্য অনুমতি দেওয়া।


8

সম্পাদনা:

নোড.জেএস নমুনা অ্যাপ্লিকেশন নোড চ্যাটের আপনার পছন্দসই কার্যকারিতা রয়েছে।
এটিতে README.textfile
3. পদক্ষেপটি আপনি যা সন্ধান করছেন তা।

ধাপ 1

  • 8002 পোর্টে হ্যালো ওয়ার্ল্ডের সাথে সাড়া দেয় এমন একটি সার্ভার তৈরি করুন

ধাপ ২

  • একটি index.html তৈরি করুন এবং এটি পরিবেশন করুন

ধাপ 3

  • Use.js পরিচয় করিয়ে দিন
  • যুক্তি পরিবর্তন করুন যাতে কোনও স্থিতিশীল ফাইল পরিবেশন করা হয়
  • 404 দেখান যদি কোনও ফাইল না পাওয়া যায়

Step4

  • jquery-1.4.2.js যোগ করুন
  • ক্লায়েন্ট.জেস যোগ করুন
  • ডাকনামের জন্য প্রম্পট ব্যবহারকারীকে সূচক html পরিবর্তন করুন

এখানে সার্ভার.জেএস

এখানে Use.js


5
আমি পাত্তা দিই না। আমার কাছে কেবল সূচক। Html আছে। আমি কেবল এইচটিএমএল + সিএসএস + জেএস বোঝাই পেতে চাই। ধন্যবাদ!
আইডোফির

16
.readFileSyncএকটি কলব্যাকের জন্য -1 । নোড.জেএস সহ আমরা অ ব্লকিং আইও ব্যবহার করি। Syncকমান্ডের সুপারিশ করবেন না দয়া করে।
রায়নোস

হাই @krmby, সাহায্য করার চেষ্টা করার জন্য ধন্যবাদ। আমি এই সত্যিই নতুন। আমি সার্ভার.জে এবং ইউএস.জেএস উভয়ই ডাউনলোড করেছি আমি যখন "নোড সার্ভার.জেএস" চালনা করি এবং একটি ব্রাউজার ব্যবহার করে পৃষ্ঠাটি অ্যাক্সেস করার চেষ্টা করি, তখন আমি এই ত্রুটিটি পেয়েছি: টাইপ-এয়ারর: অবজেক্ট # <সার্ভাররেসপনস> /var/www/hppy-site/util.js এ কোনও পদ্ধতি 'বন্ধ' নেই : 67: 8 at /var/www/hppy-site/util.js:56:4 এ [অবজেক্ট অবজেক্ট]। <নামবিহীন (fs.js: 107: 5) [অবজেক্ট অবজেক্ট] .emit (ইভেন্ট.js) এ : 61: 17) এটার পরে পড়ুন (fs.js: 970: 12) এ রেপারে (fs.js: 245: 17) কোনও ধারণা? বিটিডব্লিউ - আমি যখন আপনার প্রকল্পটি ডাউনলোড করি এবং চালিত করি তখন একই ঘটনা ঘটে।
আইডোফির

1
দুঃখিত। আমি একটি নতুন সংস্করণ ব্যবহার করছিলাম। Res.end () সহ res.close () প্রতিস্থাপন করা হয়েছে
idophir

8

আমি যেভাবে এটি করি তা হ'ল প্রথমে বিশ্বব্যাপী নোড স্ট্যাটিক সার্ভারটি ইনস্টল করা

npm install node-static -g

তারপরে যে ডিরেক্টরিতে আপনার এইচটিএমএল ফাইল রয়েছে সেটিতে নেভিগেট করুন এবং স্ট্যাটিক সার্ভার দিয়ে শুরু করুন static

ব্রাউজারে গিয়ে টাইপ করুন localhost:8080/"yourHtmlFile"


1
কোনও কিছুই ওয়ান-লাইনারকে আঘাত করে না। ধন্যবাদ!
অ্যান্ড্রয়েড ডেভ

কীভাবে এটি পরিষেবা হিসাবে চালানো যায়, তাই আমি কমান্ড প্রম্পটটি বন্ধ করেও এটি ব্যবহার করতে পারি। কোনও সরঞ্জাম এই ধরণের প্রদান করে যদি এটি না হয়।
সন্দীপ বেলে

7
var http = require('http');
var fs = require('fs');
var index = fs.readFileSync('index.html');

http.createServer(function (req, res) {
    res.writeHead(200, {'Content-Type': 'text/html'});
    // change the to 'text/plain' to 'text/html' it will work as your index page
    res.end(index);
}).listen(9615);

আমি মনে করি আপনি কোথায় এটি সন্ধান করছেন। আপনার ইনডেক্স.ইচটিএমএলে, এটি কেবলমাত্র সাধারণ এইচটিএমএল কোড দিয়ে পূরণ করুন - আপনি যা যা রেন্ডার করতে চান তা পছন্দ করুন:

<html>
    <h1>Hello world</h1>
</html>

7

মূলত গৃহীত উত্তরটি অনুলিপি করা, তবে একটি জেএস ফাইল তৈরি করা এড়ানো।

$ node
> var connect = require('connect'); connect().use(static('.')).listen(8000);

এটি খুব বিশ্বাসযোগ্য।

হালনাগাদ

এক্সপ্রেসের সর্বশেষ সংস্করণ হিসাবে, পরিবেশন-স্ট্যাটিক পৃথক মিডলওয়্যার হয়ে উঠেছে। পরিবেশন করতে এটি ব্যবহার করুন:

require('http').createServer(require('serve-static')('.')).listen(3000)

serve-staticপ্রথমে ইনস্টল করুন ।


6

ডাব্লু 3 স্কুল থেকে

অনুরোধ করা যে কোনও ফাইল পরিবেশন করার জন্য নোড সার্ভার তৈরি করা বেশ সহজ, এবং এর জন্য আপনাকে কোনও প্যাকেজ ইনস্টল করার দরকার নেই

var http = require('http');
var url = require('url');
var fs = require('fs');

http.createServer(function (req, res) {
  var q = url.parse(req.url, true);
  var filename = "." + q.pathname;
  fs.readFile(filename, function(err, data) {
    if (err) {
      res.writeHead(404, {'Content-Type': 'text/html'});
      return res.end("404 Not Found");
    }  
    res.writeHead(200, {'Content-Type': 'text/html'});
    res.write(data);
    return res.end();
  });
}).listen(8080);

HTTP: // স্থানীয় হোস্ট: 8080 / file.html

ডিস্ক থেকে file.html পরিবেশন করা হবে



5

আমি একটি সাধারণ ওয়েব সার্ভার শুরু করতে কোডের নীচে ব্যবহার করি যা url এ উল্লিখিত কোনও ফাইল যদি ডিফল্ট এইচটিএমএল ফাইল সরবরাহ করে।

var http = require('http'),
fs = require('fs'),
url = require('url'),
rootFolder = '/views/',
defaultFileName = '/views/5 Tips on improving Programming Logic   Geek Files.htm';


http.createServer(function(req, res){

    var fileName = url.parse(req.url).pathname;
    // If no file name in Url, use default file name
    fileName = (fileName == "/") ? defaultFileName : rootFolder + fileName;

    fs.readFile(__dirname + decodeURIComponent(fileName), 'binary',function(err, content){
        if (content != null && content != '' ){
            res.writeHead(200,{'Content-Length':content.length});
            res.write(content);
        }
        res.end();
    });

}).listen(8800);

এটি সমস্ত এইচটিএমএল সামগ্রী সহ সমস্ত জেএসএস, সিএসএস এবং চিত্র ফাইল সরবরাহ করবে।

বিবৃতিতে সম্মত হন " কোনও বিষয়বস্তুর ধরণটি ভুলের চেয়ে ভাল নয় "


5

আমি নিশ্চিত নই যে আপনি যা চেয়েছিলেন এটি ঠিক এটি ছিল কিনা তবে আপনি পরিবর্তনের চেষ্টা করতে পারেন:

{'Content-Type': 'text/plain'}

এটি:

{'Content-Type': 'text/html'}

এটিতে ব্রাউজার ক্লায়েন্টটি সরল পাঠ্যের পরিবর্তে এইচটিএমএল হিসাবে ফাইলটি প্রদর্শন করবে।



4
var http = require('http');
var fs = require('fs');
var index = fs.readFileSync('index.html');

http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'html'});
res.end(index);
}).listen(9615);

//Just Change The CONTENT TYPE to 'html'

6
Content-Typeহওয়া উচিত text/html, যেমন এটা যে পথ সংজ্ঞায়িত করা হয়: Content-Type := type "/" subtype *[";" parameter]
t.niese

1
এটি ফোল্ডারের আমার সমস্ত ফাইলকে এইচটিএমএল প্রকারে পরিণত করবে বলে মনে হচ্ছে, এমনকি এটি
জেএস

মহান .... কাজ করে
তীক্ষ্নভাবে চেরি

4

কিছুটা আরও ভার্বোস এক্সপ্রেস 4.x সংস্করণ তবে এটি ডিরেক্টরি তালিকা, সংক্ষেপণ, ক্যাশে এবং ন্যূনতম সংখ্যক লাইনে লগিংয়ের জন্য অনুরোধ সরবরাহ করে

var express = require('express');
var compress = require('compression');
var directory = require('serve-index');
var morgan = require('morgan'); //logging for express

var app = express();

var oneDay = 86400000;

app.use(compress());
app.use(morgan());
app.use(express.static('filesdir', { maxAge: oneDay }));
app.use(directory('filesdir', {'icons': true}))

app.listen(process.env.PORT || 8000);

console.log("Ready To serve files !")

4

জটিল উত্তরগুলির ক্রেজি পরিমাণ। আপনি যদি নোডজেএস ফাইল / ডাটাবেস প্রক্রিয়া করতে চান না তবে কেবল আপনার প্রশ্ন হিসাবে স্থির এইচটিএমএল / সিএসএস / জেএস / চিত্রগুলি পরিবেশন করতে চান তবে কেবল পুশস্টেট-সার্ভারটি ইনস্টল করুন মডিউল বা অনুরূপ ;

এখানে একটি "একটি লাইনার" রয়েছে যা একটি মিনি সাইট তৈরি এবং চালু করবে। আপনার টার্মিনালে সেই পুরো ব্লকটিকে যথাযথ ডিরেক্টরিতে কেবল পেস্ট করুন।

mkdir mysite; \
cd mysite; \
npm install pushstate-server --save; \
mkdir app; \
touch app/index.html; \
echo '<h1>Hello World</h1>' > app/index.html; \
touch server.js; \
echo "var server = require('pushstate-server');server.start({ port: 3000, directory: './app' });" > server.js; \
node server.js

ব্রাউজারটি খুলুন এবং http: // লোকালহোস্ট: 3000 এ যান । সম্পন্ন.

সার্ভারটি appডিয়ার থেকে ফাইলগুলি পরিবেশন করতে রুট হিসাবে ব্যবহার করবে । অতিরিক্ত সম্পদ যুক্ত করতে কেবল তাদের সেই ডিরেক্টরিতে রেখে দিন।


2
যদি আপনি ইতিমধ্যে স্থিতিবিদ্যা থাকে, তাহলে আপনি এখনই অনুসরণ ব্যবহার করতে পারেন:npm install pushstate-server --save; touch server.js; echo "var server = require('pushstate-server');server.start({ port: 3000, directory: './' });" > server.js; node server.js
সুইভেল

4

একটি সরল জন্য ইতিমধ্যে কিছু দুর্দান্ত সমাধান আছে nodejs serverlive-reloadingআপনার ফাইলগুলিতে পরিবর্তনগুলি করার সময় আপনার আরও একটি সমাধান প্রয়োজন ।

npm install lite-server -g

আপনার ডিরেক্টরিতে নেভিগেট করুন এবং করুন

lite-server

এটি লাইভ-লোডিং সহ আপনার জন্য ব্রাউজারটি খুলবে।


4

এক্সপ্রেস ফাংশন সেন্ডফিল আপনার প্রয়োজনমতো ঠিক তাই করে, এবং যেহেতু আপনি নোড থেকে ওয়েব সার্ভারের কার্যকারিতা চান তাই এক্সপ্রেস প্রাকৃতিক পছন্দ হিসাবে আসে এবং তারপরে স্থির ফাইলগুলি পরিবেশন করা যেমন সহজ হয়:

res.sendFile('/path_to_your/index.html')

এখানে আরও পড়ুন: https://expressjs.com/en/api.html#res.sendFile

নোডের জন্য এক্সপ্রেস ওয়েব সার্ভার সহ একটি ছোট উদাহরণ:

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

app.get('/', function(req, res) {
    res.sendFile(path.join(__dirname + '/index.html'));
});

app.listen(8080);

এটি চালান, এবং http: // লোকালহোস্ট: 8080 এ নেভিগেট করুন

আপনাকে সিএসএস এবং চিত্রের মতো স্ট্যাটিক ফাইল পরিবেশন করার জন্য এটি প্রসারিত করার জন্য, এখানে আরও একটি উদাহরণ রয়েছে:

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

app.use(express.static(__dirname + '/css'));

app.get('/', function(req, res) {
    res.sendFile(path.join(__dirname + '/index.html'));
});

app.listen(8080);

সুতরাং সিএসএস নামে একটি সাবফোল্ডার তৈরি করুন, এতে আপনার স্ট্যাটিক সামগ্রীটি রাখুন এবং এটি আপনার সূচক html এ সহজ রেফারেন্সের জন্য উপলভ্য হবে:

<link type="text/css" rel="stylesheet" href="/css/style.css" />

Href মধ্যে আপেক্ষিক পথ লক্ষ্য করুন!

ভাল খবর!


3

উপরের বেশিরভাগ উত্তরগুলি কীভাবে বিষয়বস্তু সরবরাহ করা হচ্ছে তা খুব সুন্দরভাবে বর্ণনা করে। আমি অতিরিক্ত হিসাবে যা দেখছিলাম সেগুলি ডিরেক্টরিটির তালিকা তৈরি করা ছিল যাতে ডিরেক্টরিটির অন্যান্য বিষয়বস্তুগুলি ব্রাউজ করা যায়। এখানে আরও পাঠকদের জন্য আমার সমাধান:

'use strict';

var finalhandler = require('finalhandler');
var http = require('http');
var serveIndex = require('serve-index');
var serveStatic = require('serve-static');
var appRootDir = require('app-root-dir').get();
var log = require(appRootDir + '/log/bunyan.js');

var PORT = process.env.port || 8097;

// Serve directory indexes for reports folder (with icons)
var index = serveIndex('reports/', {'icons': true});

// Serve up files under the folder
var serve = serveStatic('reports/');

// Create server
var server = http.createServer(function onRequest(req, res){
    var done = finalhandler(req, res);
    serve(req, res, function onNext(err) {
    if (err)
        return done(err);
    index(req, res, done);
    })
});


server.listen(PORT, log.info('Server listening on: ', PORT));

2

ওয়েব পৃষ্ঠাগুলি দ্রুত দেখতে এটি আমি দ্রুত ব্যবহার করি

sudo npm install ripple-emulator -g

এরপরে কেবল আপনার এইচটিএমএল ফাইলের ডিরেক্টরি লিখুন এবং চালান

ripple emulate

তারপরে ডিভাইসটি নেক্সাস 7 ল্যান্ডস্কেপে পরিবর্তন করুন।


5
এর সাথে একটি নেক্সাস 7 কী করতে পারে?
বিলম্বিত হয়েছে

2

আমি যে সহজ সংস্করণটি পেয়েছি সেগুলি নিম্নরূপ। শিক্ষার উদ্দেশ্যে, এটি সর্বোত্তম, কারণ এটি কোনও বিমূর্ত গ্রন্থাগার ব্যবহার করে না।

var http = require('http'),
url = require('url'),
path = require('path'),
fs = require('fs');

var mimeTypes = {
  "html": "text/html",
  "mp3":"audio/mpeg",
  "mp4":"video/mp4",
  "jpeg": "image/jpeg",
  "jpg": "image/jpeg",
  "png": "image/png",
  "js": "text/javascript",
  "css": "text/css"};

http.createServer(function(req, res) {
    var uri = url.parse(req.url).pathname;
    var filename = path.join(process.cwd(), uri);
    fs.exists(filename, function(exists) {
        if(!exists) {
            console.log("not exists: " + filename);
            res.writeHead(200, {'Content-Type': 'text/plain'});
            res.write('404 Not Found\n');
            res.end();
            return;
        }
        var mimeType = mimeTypes[path.extname(filename).split(".")[1]];
        res.writeHead(200, {'Content-Type':mimeType});

        var fileStream = fs.createReadStream(filename);
        fileStream.pipe(res);

    }); //end path.exists
}).listen(1337);

এখন ব্রাউজারে যান এবং নিম্নলিখিতগুলি খুলুন:

http://127.0.0.1/image.jpg

এখানে image.jpgএই ফাইলের মতো একই ডিরেক্টরিতে থাকা উচিত। আশা করি এটি কাউকে সাহায্য করবে :)


ফাইলের নাম থেকে আপনার মাইম-টাইপটি প্রকাশ করা উচিত নয়।
mwececorek

দ্রষ্টব্য: fs.exists () অবমূল্যায়ন করা হয়েছে, fs.existsSync () সরাসরি প্রতিস্থাপন।
JWAspin

@ মিউইজেকোরেক কীভাবে এটি ভাগ করা উচিত? আপনি কি মিস করেছেন যে তিনি ফাইল এক্সটেনশানটি বিভক্ত করছেন?
জেমস নিউটন

ব্যবহার করতে পারে: মাইমটাইপ = মিমটাইপগুলি [ফাইলের নাম.স্প্লিট ("।")। পপ ()] || "অ্যাপ্লিকেশন / অক্টেট-স্ট্রিম"
জেমস নিউটন

1

আমি সুগোইজেএসকেও সুপারিশ করতে পারি, এটি সেট আপ করা খুব সহজ এবং দ্রুত লেখা শুরু করার জন্য একটি বিকল্প দেয় এবং দুর্দান্ত বৈশিষ্ট্য রয়েছে।

শুরু করতে এখানে একবার দেখুন: http://demo.sugoijs.com/ , ডকুমেন্টেশন: https://wiki.sugoijs.com/

এটিতে সজ্জকারকে পরিচালনা করার অনুরোধ, অনুরোধ নীতি এবং অনুমোদনের নীতি সজ্জকার রয়েছে।

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

import {Controller,Response,HttpGet,RequestParam} from "@sugoi/server";

@Controller('/dashboard')
export class CoreController{
    constructor(){}

    @HttpGet("/:role")
    test(@RequestParam('role') role:string,
         @RequestHeader("role") headerRole:string){
        if(role === headerRole )
            return "authorized";
        else{
            throw new Error("unauthorized")
        }
    }
}

1

আজ টন লাইব্রেরি উপহার দিয়ে খুব সহজ। এখানে উত্তরগুলি কার্যকরী। আপনি আরও দ্রুত এবং সহজ শুরু করার জন্য অন্য সংস্করণ চান

অবশ্যই প্রথমে নোড.জেএস ইনস্টল করুন পরবর্তীতে:

> # module with zero dependencies
> npm install -g @kawix/core@latest 
> # change /path/to/static with your folder or empty for current
> kwcore "https://raw.githubusercontent.com/voxsoftware/kawix-core/master/example/npmrequire/express-static.js" /path/to/static

এখানে " https://raw.githubusercontent.com/voxsoftware/kawix-core/master/example/npmrequire/express-static.js " এর সামগ্রী (আপনার এটি ডাউনলোড করার দরকার নেই, কীভাবে পিছনে কাজ করে তা বোঝার জন্য আমি পোস্ট করেছি)

// you can use like this:
// kwcore "https://raw.githubusercontent.com/voxsoftware/kawix-core/master/example/npmrequire/express.js" /path/to/static
// kwcore "https://raw.githubusercontent.com/voxsoftware/kawix-core/master/example/npmrequire/express.js" 

// this will download the npm module and make a local cache
import express from 'npm://express@^4.16.4'
import Path from 'path'

var folder= process.argv[2] || "."
folder= Path.resolve(process.cwd(), folder)
console.log("Using folder as public: " + folder)

var app = express() 
app.use(express.static(folder)) 
app.listen(8181)
console.log("Listening on 8181")
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.