নোড.জেএস দ্রুত ফাইল সার্ভার (এইচটিটিপি-র উপর স্থির ফাইল)


642

নোড.জেএস-র ব্যবহারের জন্য প্রস্তুত সরঞ্জাম (এর সাথে ইনস্টল করা npm) রয়েছে, যা আমাকে HTTP- র মাধ্যমে ফাইল সার্ভার হিসাবে ফোল্ডার সামগ্রী প্রকাশ করতে সহায়তা করবে।

উদাহরণস্বরূপ, যদি আমার কাছে থাকে

D:\Folder\file.zip
D:\Folder\file2.html
D:\Folder\folder\file-in-folder.jpg

তারপরে শুরু করে D:\Folder\ node node-file-server.js আমি এর মাধ্যমে ফাইল অ্যাক্সেস করতে পারি

http://hostname/file.zip
http://hostname/file2.html
http://hostname/folder/file-in-folder.jpg

আমার নোড স্ট্যাটিক ফাইল সার্ভার কেন অনুরোধ ছাড়ছে? কিছু রহস্যময় রেফারেন্স

স্ট্যান্ডিক ফাইল সার্ভার স্ট্যান্ডার্ড নোড.জেএস

যদি এরকম কোনও সরঞ্জাম না থাকে তবে আমার কোন কাঠামো ব্যবহার করা উচিত?

সম্পর্কিত: নোডজেএসে বেসিক স্ট্যাটিক ফাইল সার্ভার


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

npmjs.com/package/local-web-server - লাইটওয়েট স্ট্যাটিক ওয়েব সার্ভার, শূন্য কনফিগারেশন
ভিক্টর

উত্তর:


1089

একটি ভাল "ব্যবহারের জন্য প্রস্তুত সরঞ্জাম" বিকল্পটি এইচটি-সার্ভার হতে পারে:

npm install http-server -g

এটি ব্যবহার করতে:

cd D:\Folder
http-server

বা, এটির মতো:

http-server D:\Folder

এটি দেখুন: https://github.com/nodeapps/http-server


10
এটা সত্যিই দারুন. আমার কোনও কারণের জন্য একটি ঠিকানা বিসি নির্দিষ্ট করা দরকার ডিফল্ট 0.0.0.0 আমার দেব পরিবেশে সহযোগিতা করছে না। http-server -a localhostপেয়ে গেল
স্যাম বেরি

41
আমি ব্যবহার করিhttp-server -a localhost -p 80
মুহাম্মদ উমার

10
এটি ব্রাউজার-সিঙ্কটিও পরীক্ষা করার মতো, যা ফাইলগুলি সংশোধন করার সময় লাইভ-আপডেটিংয়ের যুক্ত বোনাসের সাথে কম-বেশি বা একই জিনিস করতে পারে।
নিক এফ

3
--corsAccess-Control-Allow-Origin:*প্রতিক্রিয়া শিরোনাম সহ প্রেরণ করতে (অর্থাত্ একটি জসন ফাইল পরিবেশন করার সময়)
ড্যানিয়েল এফ

9
npx http-server- এনপিএক্স এটিকে ওয়ান-লাইনারে পরিণত করে যা প্রয়োজনীয় ফাইলগুলি ডাউনলোড করে এবং চালায়।
মাইক ম্যাকে

185

আপনি যদি প্রস্তুত সরঞ্জামটি ব্যবহার করতে না চান, তবে https://developer.mozilla.org/en-US/docs/Node_server_without_framework এ আমার দ্বারা প্রদর্শিত হিসাবে আপনি নীচের কোডটি ব্যবহার করতে পারেন :

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

http.createServer(function (request, response) {
    console.log('request starting...');

    var filePath = '.' + request.url;
    if (filePath == './')
        filePath = './index.html';

    var extname = path.extname(filePath);
    var contentType = 'text/html';
    switch (extname) {
        case '.js':
            contentType = 'text/javascript';
            break;
        case '.css':
            contentType = 'text/css';
            break;
        case '.json':
            contentType = 'application/json';
            break;
        case '.png':
            contentType = 'image/png';
            break;      
        case '.jpg':
            contentType = 'image/jpg';
            break;
        case '.wav':
            contentType = 'audio/wav';
            break;
    }

    fs.readFile(filePath, function(error, content) {
        if (error) {
            if(error.code == 'ENOENT'){
                fs.readFile('./404.html', function(error, content) {
                    response.writeHead(200, { 'Content-Type': contentType });
                    response.end(content, 'utf-8');
                });
            }
            else {
                response.writeHead(500);
                response.end('Sorry, check with the site admin for error: '+error.code+' ..\n');
                response.end(); 
            }
        }
        else {
            response.writeHead(200, { 'Content-Type': contentType });
            response.end(content, 'utf-8');
        }
    });

}).listen(8125);
console.log('Server running at http://127.0.0.1:8125/');

আপডেট আপনি যদি আপনার সার্ভারটি বাহ্যিক চাহিদা / ফাইল থেকে অ্যাক্সেস করতে চান তবে আপনাকে নীড লিখে আপনার নোড.জেএস ফাইলটিতে সিওআরগুলি অতিক্রম করতে হবে, যেমন আমি এখানে পূর্ববর্তী উত্তরে বলেছি

// Website you wish to allow to connect
response.setHeader('Access-Control-Allow-Origin', '*');

// Request methods you wish to allow
response.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');

// Request headers you wish to allow
response.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type');

// Set to true if you need the website to include cookies in the requests sent
// to the API (e.g. in case you use sessions)
response.setHeader('Access-Control-Allow-Credentials', true);

হালনাগাদ

অ্যাড্রিয়ান যেমন মন্তব্যে উল্লেখ করেছেন, তিনি এখানে পূর্ণ ব্যাখ্যার সাথে একটি ES6 কোড লিখেছিলেন, কোডটি কোনও কারণে মূল সাইট থেকে চলে যাওয়ার ক্ষেত্রে আমি কেবল নীচে তার কোডটি পুনরায় পোস্ট করছি:

const http = require('http');
const url = require('url');
const fs = require('fs');
const path = require('path');
const port = process.argv[2] || 9000;

http.createServer(function (req, res) {
  console.log(`${req.method} ${req.url}`);

  // parse URL
  const parsedUrl = url.parse(req.url);
  // extract URL path
  let pathname = `.${parsedUrl.pathname}`;
  // based on the URL path, extract the file extention. e.g. .js, .doc, ...
  const ext = path.parse(pathname).ext;
  // maps file extention to MIME typere
  const map = {
    '.ico': 'image/x-icon',
    '.html': 'text/html',
    '.js': 'text/javascript',
    '.json': 'application/json',
    '.css': 'text/css',
    '.png': 'image/png',
    '.jpg': 'image/jpeg',
    '.wav': 'audio/wav',
    '.mp3': 'audio/mpeg',
    '.svg': 'image/svg+xml',
    '.pdf': 'application/pdf',
    '.doc': 'application/msword'
  };

  fs.exists(pathname, function (exist) {
    if(!exist) {
      // if the file is not found, return 404
      res.statusCode = 404;
      res.end(`File ${pathname} not found!`);
      return;
    }

    // if is a directory search for index file matching the extention
    if (fs.statSync(pathname).isDirectory()) pathname += '/index' + ext;

    // read file from file system
    fs.readFile(pathname, function(err, data){
      if(err){
        res.statusCode = 500;
        res.end(`Error getting the file: ${err}.`);
      } else {
        // if the file is found, set Content-type and send data
        res.setHeader('Content-type', map[ext] || 'text/plain' );
        res.end(data);
      }
    });
  });


}).listen(parseInt(port));

console.log(`Server listening on port ${port}`);

2
অবশ্যই, response.writeHead(200হওয়া উচিত response.writeHead(404;)
থমাস হান্টার দ্বিতীয়

14
সেই কোডটি কি 127.0.0.1/../..////etc/passwd এর মতো কিছু করে ফাইল ট্রিতে যাওয়ার অনুমতি দেবে না ? আমি এর বিপরীতে কোন চেক দেখতে পাচ্ছি না।
রল্ফ

3
যদি কেউ ES6 ​​+ সংস্করণে আগ্রহী হন, আমি একটি স্ট্যাটিক ফাইল সার্ভার তৈরি করেছি যা MIME প্রকারগুলি পরিচালনা করে: gist.github.com/amejiarosario/53afae82e18db30 دادc9bc39035778e5
অ্যাড্রিয়ান

1
@ অ্যাড্রিয়ান এই কোডটি খুব দুর্দান্ত, তবে আমি এটির সাথে রুট অ্যাক্সেস পাওয়ার একটি উপায় খুঁজে পেয়েছি। সমাধানটি হ'ল ফাইল নেমে শীর্ষস্থানীয় সময়ের পরিমাণ একের মধ্যে সীমাবদ্ধ করা যাতে আপনি ../../etc/passwordস্টাফ করতে না পারেন। gist.github.com/amejiarosario/53afae82e18db30 دادc9bc39035778e5
রিড

1
pathname = pathname.replace(/^(\.)+/, '.');
সেফ রিড

79

নোডজেএস স্ক্রিপ্টের মধ্যে থেকে চালিতযোগ্য একটি সার্ভারের জন্য লোকেরা:

তুমি ব্যবহার করতে পার এক্সপ্রেস / সার্ভিস-স্ট্যাটিক যা প্রতিস্থাপন করে connect.static(যা সংযোগ 3 হিসাবে আর উপলভ্য নয়):

myapp.js:

var http = require('http');

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

var serve = serveStatic("./");

var server = http.createServer(function(req, res) {
  var done = finalhandler(req, res);
  serve(req, res, done);
});

server.listen(8000);

এবং তারপরে কমান্ড লাইন থেকে:

  • $ npm install finalhandler serve-static
  • $ node myapp.js

1
এফওয়াইআই এটি আমার পক্ষে কার্যকর হয়নি। আমি ফাইলহ্যান্ডলার ব্যবহার করে ইনস্টল করেছি npm install filehandlerএবং প্যাকেজটি node_modulesডিরেক্টরিতে তালিকাভুক্ত । তবে আমি যখন myapp.jsনোড চালাই তখন ত্রুটি ছুড়ে বলে Error: cannot find module filehandler। যদি আমি ফাইলহ্যান্ডলার লোড করতে প্রয়োজনীয় এসটিএসটিমেন্ট মন্তব্য করি তবে অ্যাপ্লিকেশন লোডগুলি পরিবেশন-স্ট্যাটিক ঠিক জরিমানা করে, তাই দেখে মনে হচ্ছে ফিলহ্যান্ডলার প্যাকেজটিতে কিছু ভুল আছে। আজ 12 ডিসেম্বর, 2014, তাই সম্ভবত এই উত্তর পোস্ট হওয়ার পরে প্যাকেজ পরিবর্তন হয়েছে?
লি জেনকিনস

7
এটি finalহ্যান্ডলারটি নয়file
jakub.g

এই সমাধানটির আর একটি সুবিধা হ'ল, ফাইলগুলি ক্যাশে করা হয় না, তাই কোড পরিবর্তন করার সময় আপনার কোনও প্রক্রিয়া পুনরায় আরম্ভ করার দরকার নেই।
klimat

59

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

python -m SimpleHTTPServer [port]

এটি ভাল কাজ করে এবং পাইথনের সাথে আসে।


16
পাইথন 3 সমতুল্য: python -m http.server [port](উল্লিখিতটি
পাইথন 2 এর

পাইথন আমার জন্য ব্যর্থ হয় যখন এটি ওএস ইমেজের মতো বড় ফাইলগুলি সরবরাহ করার বিষয়ে। ফেডোরা 23
জিমি

9
এবং পিএইচপি তে:php -S localhost:8000
ডেনিস

আমি এটি সর্বদা একটি ফোল্ডার থেকে সামগ্রী পরিবেশন করতে ব্যবহার করি।
অ্যাড্রিয়ান লিঞ্চ

33

আপনি যা খুঁজছেন তা সংযোগ হতে পারে।

এর সাথে সহজে ইনস্টল করা:

npm install connect

তারপরে সর্বাধিক প্রাথমিক স্ট্যাটিক ফাইল সার্ভারটি এইভাবে লেখা যেতে পারে:

var connect = require('connect'),
    directory = '/path/to/Folder';

connect()
    .use(connect.static(directory))
    .listen(80);

console.log('Listening on port 80.');

4
এটি 3 সংযোগ হিসাবে আর কাজ করে না কারণ এটি প্রকাশিত হয় না connect.static; প্রতিস্থাপনের জন্য নীচে আমার উত্তরটি দেখুন
jakub.g

4
আমি বিশ্বাস করি যে এটি এখনও ডিফল্টরূপে এক্সপ্রেসে বান্ডিল রয়েছে, তবে প্রকৃতপক্ষে এখন পৃথক requireসক্ষম মডিউল "সার্ভ-স্ট্যাটিক" তে উপস্থিত রয়েছে।
ওলেগ

18

এনপিএম ব্যবহার করে এক্সপ্রেস ইনস্টল করুন: https://expressjs.com/en/starter/installing.html

এই বিষয়বস্তু দিয়ে আপনার সূচক html এর একই স্তরে সার্ভার.জেএস নামের একটি ফাইল তৈরি করুন:

var express = require('express');
var server = express();
server.use('/', express.static(__dirname + '/'));
server.listen(8080);

আপনি যদি এটি অন্য কোনও জায়গায় রাখতে চান তবে তৃতীয় লাইনে পথ নির্ধারণ করুন:

server.use('/', express.static(__dirname + '/public'));

আপনার ফাইল যুক্ত ফোল্ডারে সিডি করুন এবং এই কমান্ডটি দিয়ে কনসোল থেকে নোড চালান:

node server.js

লোকালহোস্টে ব্রাউজ করুন: 8080


1
হাই, আমি এটিকে সঠিকভাবে চালাতে পারি, তবে এটি দেখায় Cannot GET /। আমি সার্ভার চালানোর জন্য AWS ইসি 2 ব্যবহার করি।
ওয়েই জিয়া

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

path.join(__dirname, 'public')আরও ক্রস প্ল্যাটফর্ম।
sdgfsdh

16

এক-লাইন promises প্রতিশ্রুতির পরিবর্তে প্রুফ

এখানে চিত্র বর্ণনা লিখুন

প্রথম http-server, hs- লিংক

npm i -g http-server   // install
hs C:\repos            // run with one line?? FTW!!

দ্বিতীয়টি হ'ল serveজেডআইটিএক্স - লিঙ্ক

npm i -g serve         // install
serve C:\repos         // run with one line?? FTW!!

নিম্নলিখিতটি উপলভ্য বিকল্পগুলি রয়েছে, যদি এটি আপনাকে সিদ্ধান্ত নিতে সহায়তা করে।

সি: \ ব্যবহারকারীগণ wer কিউয়ার্টি> HTTP- সার্ভার - সহায়তা
ব্যবহার: HTTP- সার্ভার [পথ] [বিকল্পসমূহ]

বিকল্প:
  -p বন্দর ব্যবহার করতে হবে [8080]
  -এ ব্যবহার করার জন্য ঠিকানা [0.0.0.0]
  -d ডিরেক্টরি তালিকা প্রদর্শন করুন [সত্য]
  -i প্রদর্শন অটোইন্ডেক্স [সত্য]
  -জি - জিজিপ জিজিপ ফাইলগুলি যখন সম্ভব সম্ভব পরিবেশন করুন [মিথ্যা]
  -extxt ডিফল্ট ফাইল এক্সটেনশন যদি [কেউই না] সরবরাহ না করে
  -s --silent আউটপুট থেকে লগ বার্তাগুলি দমন করে
  --cors [= শিরোলেখ] "অ্যাক্সেস-কন্ট্রোল-অরিজিন-অরিজিন" শিরোনামের মাধ্যমে CORS সক্ষম করুন
                     Ptionচ্ছিকভাবে কমা দ্বারা আলাদা CORS শিরোনাম তালিকা সরবরাহ করুন
  -o [पथ] সার্ভারটি শুরু করার পরে ব্রাউজার উইন্ডোটি খুলুন
  -c ক্যাশে সময় (সর্বাধিক বয়স) সেকেন্ডে [3600], যেমন -c10 10 সেকেন্ডের জন্য।
               ক্যাচিং অক্ষম করতে, -c-1 ব্যবহার করুন।
  -U --utc লগ বার্তাগুলিতে ইউটিসি সময় বিন্যাস ব্যবহার করুন।

  -পি - প্রক্সি ফ্যালব্যাক প্রক্সি যদি অনুরোধটি সমাধান না করা যায়। যেমন: http://someurl.com

  -S --ssl https সক্ষম করুন।
  -সি - এসআরএল সার্ট ফাইলের ডিফল্ট পাথ (ডিফল্ট: cert.pem)।
  -কে - কী পাথ এসএসএল কী ফাইলের (ডিফল্ট: key.pem)।

  -r --robots /robots.txt এর প্রতিক্রিয়া জানায় [ব্যবহারকারী-এজেন্ট: * \ n ডিসিস্লো: /]
  -h --help এই তালিকাটি মুদ্রণ করুন এবং প্রস্থান করুন।
সি: \ ব্যবহারকারীগণ \ কিওয়ার্টি> পরিবেশন করুন - সহায়তা lp

  ব্যবহার: serv.js [অপশন] [কমান্ড]

  আদেশগুলি:

    সহায়তা প্রদর্শন সাহায্য

  বিকল্প:

    -a, --auth বেসিক লেখার পিছনে পরিবেশন করুন
    -সি, - ক্যাশে ব্রাউজারে ফাইল ক্যাশে করার জন্য মিলি সেকেন্ডে সময়
    -n, - ক্লিপলেস ক্লিপবোর্ডে ঠিকানা অনুলিপি করবেন না (ডিফল্টরূপে অক্ষম)
    -সি, --cors সেটআপ * কোনও উত্স থেকে অনুরোধ অনুমোদনের জন্য CORS শিরোনাম (ডিফল্টরূপে অক্ষম)
    -h, - সহায়তা আউটপুট ব্যবহারের তথ্য
    -i, --ignore ফাইল এবং ডিরেক্টরি উপেক্ষা করতে
    -ও, --পেন ব্রাউজারে স্থানীয় ঠিকানা খুলুন (ডিফল্টরূপে অক্ষম)
    -পি, - পোর্ট শুনতে শুনতে (5000 এ ডিফল্ট)
    -এস, --সিলেন্ট কনসোলে কোনও লগইন করবেন না
    -s, --single একক পৃষ্ঠার অ্যাপ্লিকেশন পরিবেশন করুন (1 দিনের মধ্যে - 1 দিন সেট করে)
    -t, - ত্রিহীন স্ট্যাটিক্স ট্রি প্রদর্শন করবেন না (ডিফল্টরূপে অক্ষম)
    -u, --unzided GZIP সংক্ষেপণ অক্ষম করুন
    -v, --version সংস্করণ নম্বর আউটপুট

আপনার যদি পরিবর্তনগুলির জন্য নজর রাখা প্রয়োজন, দেখুন hostr, হেনরি সেংয়ের উত্তরটি জমা দিন


14

কেবলমাত্র ডেমো / প্রোটো সার্ভার

আপনার যদি প্রয়োজন হয় তবে এটি চেষ্টা করুন:

const http = require('http');
const fs = require('fs');
const port = 3000;
const app = http.createServer((req,res) => {
    res.writeHead(200);
    if (req.url === '/') req.url = '/index.html'; // courtesy of @JosephCho
    res.end(fs.readFileSync(__dirname + req.url));
});

app.listen(port);

দ্রষ্টব্য: আপনার ঠিকানার অংশ হিসাবে আপনাকে "/index.html" ব্যবহার করা দরকার যেমন " http: // লোকালহোস্ট: 3000 / সূচক html "


2
সিঙ্ক সংস্করণ ব্যবহার করবেন না। রিড স্ট্রিম থেকে পুনরায় তৈরি করতে পাইপ তৈরির নির্দেশ দিন।
এডুয়ার্ড বান্দারেঙ্কো

1
যদি আপনার দ্রুত এবং নোংরা ওয়ান-টাইম ওয়ান ট্রিক পনি দরকার হয় তবে সেরা উত্তর।
কলাপসার

1
আপনি যদি index.htmlনিজের ঠিকানার অংশ হিসাবে ব্যবহার এড়াতে চান তবে if (req.url === '/') req.url = '/index.html';ঠিক পরে যুক্ত করুন res.writeHead(200);
জোসেফ চো

3
পছন্দ করুন const stream = fs.createReadStream(...); stream.pipe(res);সব আপনি প্রয়োজন
জাস্টিন Meiners

8

আরও একটি স্থিতিশীল ওয়েব সার্ভার রয়েছে যা বেশ সুন্দর: ব্রাউজার-সিঙ্ক।

নোড প্যাকেজ ম্যানেজার ব্যবহার করে এটি ডাউনলোড করা যেতে পারে:

npm install -g browser-sync

ইনস্টলেশন শেষে, সেন্টিমিডি প্রম্পটে প্রকল্প ফোল্ডারে নেভিগেট করুন এবং কেবল নিম্নলিখিতটি চালান:

browser-sync start --server --port 3001 --files="./*"

এটি ব্রাউজারে বর্তমান ফোল্ডারের সমস্ত ফাইল কেটারিং শুরু করবে।

ব্রাউজারসিঙ্ক থেকে আরও খুঁজে পাওয়া যাবে

ধন্যবাদ।


2
অন্যান্য স্ট্যাটিক সার্ভারের চেয়ে ব্রাউজারসিঙ্ক ব্যবহার করার সুবিধাটি হ'ল এটি ফ্ল্যাশটি আপডেট করে যখনই --filesপতাকা দ্বারা উল্লিখিত ফাইলগুলি পরিবর্তন হয় (nb। আপনাকে নির্দিষ্ট করার দরকার নেই ./*- আপনি যেগুলি ব্রাউজারসিংকে সক্রিয়ভাবে আপডেটগুলি দেখতে চান, উদাহরণস্বরূপ । css/*.css)
নিক এফ

7

এই পৃষ্ঠায় উত্তরগুলির সাথে আমার খুব ভাগ্য হয়নি, তবে নীচে মনে হয় কৌশলটি করা হয়েছে।

server.jsনিম্নলিখিত বিষয়বস্তু সহ একটি ফাইল যুক্ত করুন :

const express = require('express')
const path = require('path')
const port = process.env.PORT || 3000
const app = express()

// serve static assets normally
app.use(express.static(__dirname + '/dist'))

// handle every other route with index.html, which will contain
// a script tag to your application's JavaScript file(s).
app.get('*', function (request, response){
  response.sendFile(path.resolve(__dirname, 'dist', 'index.html'))
})

app.listen(port)
console.log("server started on port " + port)

আপনার প্রয়োজনীয়তাও নিশ্চিত করুন express। আপনার সেটআপের উপর নির্ভর করে চালান yarn add express --saveবা চালনা npm install express --saveকরুন (আমি yarnএটি বেশ দ্রুত সুপারিশ করতে পারি )।

আপনি distআপনার সামগ্রীতে যে ফোল্ডারটি পরিবেশন করছেন তা আপনি পরিবর্তন করতে পারেন । আমার সাধারণ প্রকল্পের জন্য, আমি কোনও ফোল্ডার থেকে পরিবেশন করছিলাম না, তাই আমি কেবল distফাইলের নামটি সরিয়েছি ।

তাহলে আপনি দৌড়াতে পারেন node server.js। যেহেতু আমার প্রকল্পটি হিরোকু সার্ভারে আপলোড করতে হয়েছিল তাই আমার package.jsonফাইলে নিম্নলিখিতগুলি যুক্ত করা দরকার :

  "scripts": {
    "start": "node server.js"
  }

6

আপনি যদি এক্সপ্রেস ফ্রেমওয়ার্কটি ব্যবহার করেন তবে এই কার্যকারিতাটি প্রস্তুত হওয়ার জন্য প্রস্তুত।

একটি সাধারণ ফাইল পরিবেশন অ্যাপ সেটআপ করতে কেবল এটি করুন:

mkdir yourapp
cd yourapp
npm install express
node_modules/express/bin/express

আমি কি pm n pm ইনস্টল -g এক্সপ্রেস করতে পারি; তাদের $ প্রকাশ?
পল ভেরেস্ট

আমি আপনার পদক্ষেপগুলি অনুসরণ করেছি, তবে আমার এক্সপ্রেসে বিন ফোল্ডার নেই
Qwerty

6

এখানে আমার ওয়ান-ফাইল / লাইটওয়েট নোড.জেএস স্ট্যাটিক ফাইল ওয়েব-সার্ভার পোষা প্রজেক্ট যা কোনও বিশ্বাসের উপর নির্ভর করে না যে আমি বিশ্বাস করি একটি দ্রুত এবং সমৃদ্ধ সরঞ্জাম যা এটির ব্যবহারটি আপনার লিনাক্স / ইউনিক্স / ম্যাকোস টার্মিনালে এই আদেশটি প্রদান করার মতোই সহজ ( বা অ্যান্ড্রয়েডে টার্মাক্স ) যখন নোড.জেএস ( বা দেবিয়ানnodejs-legacy / উবুন্টুতে) ইনস্টল থাকে:

curl pad.js.org | node 

(ডকুমেন্টেশনে উইন্ডোজ ব্যবহারকারীদের জন্য বিভিন্ন কমান্ড বিদ্যমান)

এটি বিভিন্ন জিনিসকে সমর্থন করে যা আমি বিশ্বাস করি যে এটি দরকারী হিসাবে পাওয়া যেতে পারে,

  • শ্রেণিবদ্ধ ডিরেক্টরি সূচক তৈরি / পরিবেশন করা
    • বিভিন্ন মানদণ্ডে বাছাই ক্ষমতা সহ
    • ক্রোম, ফায়ারফক্স এবং অন্যান্য ব্রাউজারগুলিতে [মাল্টি-ফাইল] ড্র্যাগ-অ্যান্ড-ড্রপ এবং ফাইল / টেক্সট-কেবল কপি-পেস্ট এবং সিস্টেম ক্লিপবোর্ড স্ক্রিন-শট পেস্টের মাধ্যমে ব্রাউজার থেকে আপলোড করুন (যা কমান্ড লাইনের মাধ্যমে বন্ধ করা যেতে পারে) এটি সরবরাহ করে বিকল্পগুলি)
    • ফোল্ডার / নোট-তৈরি / আপলোড বোতাম
  • সুপরিচিত ফাইল টাইপের জন্য সঠিক মাইমগুলি পরিবেশন করা (এটি অক্ষম করার সম্ভাবনা সহ)
  • এনপিএম প্যাকেজ এবং স্থানীয় সরঞ্জাম হিসাবে বা ডকারের সাথে স্থায়ী পরিষেবা হিসাবে এক-লিনিয়ার ইনস্টলেশন হিসাবে ইনস্টলেশনের সম্ভাবনা
  • দ্রুত স্থানান্তরকরণের জন্য এইচটিটিপি 206 ফাইল পরিবেশন (মাল্টিপার্ট ফাইল স্থানান্তর)
  • টার্মিনাল এবং ব্রাউজার কনসোল থেকে আপলোডগুলি (আসলে এটি অন্য পৃষ্ঠাগুলি / ডোমেনগুলিতে ব্রাউজারগুলির জেএস কনসোলের জন্য একটি ফাইল-সিস্টেমের প্রক্সি হিসাবে লক্ষ্য করা হয়েছিল)
  • CORS ডাউনলোড / আপলোড (যা বন্ধও করা যায়)
  • সহজ এইচটিটিপিএস ইন্টিগ্রেশন
  • এটির সাথে আরও নিরাপদ পরিবেশন অর্জনের জন্য লাইটওয়েট কমান্ড লাইন বিকল্পগুলি:
    • নোড.জেএস 8 এ আমার প্যাচ সহ , আপনি প্রথম ইনস্টলেশন ছাড়াই বিকল্পগুলি অ্যাক্সেস করতে পারবেন:curl pad.js.org | node - -h
    • বা প্রথমে এটির মাধ্যমে সিস্টেম-গ্লোবাল এনপিএম প্যাকেজ হিসাবে [sudo] npm install -g pad.jsইনস্টল করুন এবং তার বিকল্পগুলি অ্যাক্সেস পেতে এর ইনস্টলড সংস্করণটি ব্যবহার করুন:pad -h
    • অথবা প্রদত্ত ডকার চিত্রটি ব্যবহার করুন যা ডিফল্টরূপে তুলনামূলক সুরক্ষিত বিকল্পগুলি ব্যবহার করে। [sudo] docker run --restart=always -v /files:/files --name pad.js -d -p 9090:9090 quay.io/ebraminio/pad.js

সরঞ্জামটি ব্যবহার করে একটি ফোল্ডার সূচকের স্ক্রিনশট

উপরে বর্ণিত বৈশিষ্ট্যগুলি বেশিরভাগ ক্ষেত্রে টুলটির মূল পৃষ্ঠায় ডকুমেন্ট করা হয় http://pad.js.org যা কিছু দুর্দান্ত কৌশল দ্বারা আমি ব্যবহার করেছি এটি সেই জায়গাটি যা সরঞ্জাম উত্স থেকে নিজেও পরিবেশন করা হয়েছিল!

সরঞ্জাম উত্সটি গিটহাবে রয়েছে যা আপনার প্রতিক্রিয়া, বৈশিষ্ট্য অনুরোধ এবং welcome গুলি স্বাগত জানায়!


5

Npm@5.2.0 থেকে, npmবলা সাধারণ এনএমপি পাশাপাশি একটি নতুন বাইনারি ইনস্টল করা শুরু করে npx। সুতরাং, এখন একটি ডিরেক্টরি বর্তমান ডিরেক্টরি থেকে স্ট্যাটিক http সার্ভার তৈরি করতে:

npx serve

অথবা

npx http-server

4

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

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

আমরা এটি কোডপাইল সাইটে ব্যবহার করি এবং 1k সমবর্তী ব্যবহারকারী সংযোগ লোডের অধীনে 25 সংস্থানগুলি ডাউনলোড করে এমন পৃষ্ঠায়> 700 অনুরোধ / সেকেন্ড> 4 কে অনুরোধ / সেকেন্ডের বৃদ্ধি পেয়েছি।

উদাহরণ:

var server = require('http').createServer();

var buffet = require('buffet')(root: './file'); 

 

server.on('request', function (req, res) {

  buffet(req, res, function () {

    buffet.notFound(req, res);

  });

});

 

server.listen(3000, function () {

  console.log('test server running on port 3000');

});

4

সেই লিঙ্কটি একবার দেখুন

আপনার কেবল এক্সপ্রেস মডিউল ইনস্টল করতে হবে node js

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

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

আপনি আপনার ফাইলটি http: //hostname/Folder/file.zip এর মতো অ্যাক্সেস করতে পারবেন


4

নীচে আমার জন্য কাজ করেছেন:

app.jsনীচের বিষয়বস্তু সহ একটি ফাইল তৈরি করুন :

// app.js

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

http.createServer(function (req, res) {
  fs.readFile(__dirname + req.url, function (err,data) {
    if (err) {
      res.writeHead(404);
      res.end(JSON.stringify(err));
      return;
    }
    res.writeHead(200);
    res.end(data);
  });
}).listen(8080);

index.htmlনীচের বিষয়বস্তু সহ একটি ফাইল তৈরি করুন :

Hi

একটি কমান্ড লাইন শুরু করুন:

cmd

নীচে চালান cmd:

node app.js

ক্রোমে ইউআরএল নীচে যান:

http://localhost:8080/index.html

এখানেই শেষ. আশা করি এইটি কাজ করবে.

সূত্র: https://nodejs.org/en/ জ্ঞান / এইচটিটিপি / সার্ভার / how- to- ser- static- files/



3

এখানে অন্য একটি সহজ ওয়েব সার্ভার।

https://www.npmjs.com/package/hostr

ইনস্টল করুন

npm install -g hostr

কর্মরত পরিচালক পরিবর্তন করুন

cd myprojectfolder/

এবং শুরু করুন

hostr

এটি পরিবর্তনগুলির জন্যও নজর রাখে এবং লাইভ পুনরায় লোড সরবরাহ করে।
কিওয়ার্টি

3

সরল নোড.জেজে:

const http = require('http')
const fs = require('fs')
const path = require('path')

process.on('uncaughtException', err => console.error('uncaughtException', err))
process.on('unhandledRejection', err => console.error('unhandledRejection', err))

const publicFolder = process.argv.length > 2 ? process.argv[2] : '.'
const port = process.argv.length > 3 ? process.argv[3] : 8080

const mediaTypes = {
  zip: 'application/zip',
  jpg: 'image/jpeg',
  html: 'text/html',
  /* add more media types */
}

const server = http.createServer(function(request, response) {
  console.log(request.method + ' ' + request.url)

  const filepath = path.join(publicFolder, request.url)
  fs.readFile(filepath, function(err, data) {
    if (err) {
      response.statusCode = 404
      return response.end('File not found or you made an invalid request.')
    }

    let mediaType = 'text/html'
    const ext = path.extname(filepath)
    if (ext.length > 0 && mediaTypes.hasOwnProperty(ext.slice(1))) {
      mediaType = mediaTypes[ext.slice(1)]
    }

    response.setHeader('Content-Type', mediaType)
    response.end(data)
  })
})

server.on('clientError', function onClientError(err, socket) {
  console.log('clientError', err)
  socket.end('HTTP/1.1 400 Bad Request\r\n\r\n')
})

server.listen(port, '127.0.0.1', function() {
  console.log('👨‍🔧 Development server is online.')
})

এটি একটি সাধারণ নোড.জেএস সার্ভার যা কেবলমাত্র একটি নির্দিষ্ট ডিরেক্টরিতে অনুরোধ করা ফাইলগুলি সরবরাহ করে।

ব্যবহার:

node server.js folder port

folderঅবস্থানের উপর নির্ভর করে পরম বা আপেক্ষিক হতে পারে server.js। ডিফল্ট মান হ'ল .ডিরেক্টরিটি যা আপনি node server.jsআদেশ সারণি কার্যকর করেন।

port ডিফল্ট হিসাবে 8080 হয় তবে আপনি আপনার ওএস এ উপলব্ধ যে কোনও পোর্ট নির্দিষ্ট করতে পারবেন।

আপনার ক্ষেত্রে, আমি করব:

cd D:\Folder
node server.js

আপনি D:\Folderটাইপ করে একটি ব্রাউজার থেকে নীচে ফাইলগুলি ব্রাউজ করতে পারেনhttp://127.0.0.1:8080/somefolder/somefile.html


2

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

https://github.com/jdr0dn3y/nodejs-StatServe


2

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

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

process.on('uncaughtException', function(err) {
  console.log(err);
});

var server = express();

server.use(express.static(__dirname));

var port = 10001;
server.listen(port, function() { 
    console.log('listening on port ' + port);     
    //var err = new Error('This error won't break the application...')
    //throw err
});

আপডেট - আমার উত্তরটি কাজ করে তবে আমি এখন @ ম্যাট সেল্ফের উত্তরটি ব্যবহার করতে পারি HTTP- সার্ভারটি। এটা ভাল কাজ বলে মনে হয়।
হকিজে

2

প্রথমে npm install node-static -g -g এর মাধ্যমে নোড-স্ট্যাটিক সার্ভারটি ইনস্টল করা হ'ল এটি আপনার সিস্টেমে গ্লোবাল ইনস্টল করতে হবে, তারপরে আপনার ফাইলগুলি যেখানে রয়েছে সেই ডিরেক্টরিতে নেভিগেট static করুন, 8080 বন্দরটিতে সার্ভারটি শোনার মাধ্যমে ব্রাউজারে নেভিগেট করুন এবং লোকালহোস্ট টাইপ করুন: 8080 / yourhtmlfilename ।


2

আপনি এর জন্য এনপিএম পরিবেশন প্যাকেজটি ব্যবহার করতে পারেন , যদি আপনার নোডজেএস স্টাফের প্রয়োজন না হয় তবে এটি দ্রুত এবং সহজেই ব্যবহারযোগ্য সরঞ্জাম:

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

npm install -g serve

2 - আপনার স্থির ফোল্ডারটি এর সাথে পরিবেশন করুন serve <path>:

d:> serve d:\StaticSite

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

http://localhost:3000

আপনি বুঝতে পেরেছেন যে npmনোড প্যাকেজ ম্যানেজার তাই আপনি বাস্তবে
নোডজেএস

আমি করি, "নোডজেএস স্টাফ" হিসাবে আমি যা বোঝাতে চেয়েছি সেগুলি নোডজেএস ব্যবহার করছিল এবং বেশিরভাগ উত্তরের মতো ফাইলগুলি পরিবেশন করতে এক্সপ্রেস করছিল। সার্ভ একটি স্বাধীন নির্বাহযোগ্য, এনপিএম কেবল এটি ইনস্টল করতে ব্যবহৃত হয়, আপনি কেবল এটি সরাসরি ডাউনলোড করতে পারেন।
দিয়েগো মেন্ডেস

1

এনপিএম রেজিস্ট্রি https://npmjs.org/search?q=server অনুসন্ধান করে আমি স্থির-সার্ভার https://github.com/maelstrom/static-server পেয়েছি

কখনও কোনও সহকর্মীকে একটি ফাইল প্রেরণ করা দরকার, তবে 100 এমবি জন্তুটিকে ইমেল করা বিরক্ত করা যাবে না? একটি সরল উদাহরণ জাভাস্ক্রিপ্ট অ্যাপ্লিকেশন চালনা করতে চেয়েছিল, তবে ফাইলটি এটি চালাতে সমস্যা ছিল: /// প্রোটোকল? সাম্বা বা এফটিপি বা অন্য কোনও কিছুর জন্য কনফিগারেশন ফাইলগুলি সম্পাদনা করার প্রয়োজন নেই এমন কোনও ল্যানে আপনার মিডিয়া ডিরেক্টরিটি ভাগ করে নিতে চান? তাহলে এই ফাইল সার্ভারটি আপনার জীবনকে কিছুটা সহজ করে তুলবে।

সাধারণ স্ট্যাটিক স্টাফ সার্ভারটি ইনস্টল করতে, এনপিএম ব্যবহার করুন:

npm install -g static-server

তারপরে একটি ফাইল বা ডিরেক্টরি পরিবেশন করতে, কেবল চালান

$ serve path/to/stuff
Serving path/to/stuff on port 8001

এমনকি ফোল্ডার সামগ্রী লিস্ট করতে পারে।

দুর্ভাগ্যক্রমে, এটি ফাইলগুলি সরবরাহ করতে পারেনি :)


5
আমি সেই সার্ভারটি তৈরি করেছি। এই ফাইল সার্ভারটি নোডের একটি খুব পুরানো সংস্করণের বিপরীতে নির্মিত হয়েছিল , সুতরাং কেন এটি আর কাজ করে না। এটি ঠিক করার জন্য আমার কাছে এখনই সময় নেই। আমি উত্তরটি উপরে ওলেগ দ্বারা ব্যবহার করার পরামর্শ দিচ্ছি। এটি সহজেই এক্সিকিউটেবল একটি ছোট নোডে বান্ডিল করা যেতে পারে, এবং মূলত যা হয় তা খাঁটি করে did
টিম হিপ

আপনাকে ধন্যবাদ টিম, খুব পেশাদার প্রতিক্রিয়া। আমি যদিও কোড মুছে ফেলব না, তবে রিডমি আপডেট করুন।
পল ভেরেস্ট

1

সংযোগ ব্যবহার করে একটি সাধারণ স্ট্যাটিক-সার্ভার

var connect = require('connect'),
  directory = __dirname,
  port = 3000;

connect()
  .use(connect.logger('dev'))
  .use(connect.static(directory))
  .listen(port);

console.log('Listening on port ' + port);

একটি সাধারণ ওয়েব সার্ভার হিসাবে node.js ব্যবহার করে দেখুন



1

const http = require('http');
const fs = require('fs');
const url = require('url');
const path = require('path');


let mimeTypes = {
  '.html': 'text/html',
  '.css': 'text/css',
  '.js': 'text/javascript',
  '.jpg': 'image/jpeg',
  '.png': 'image/png',
  '.ico': 'image/x-icon',
  '.svg': 'image/svg+xml',
  '.eot': 'appliaction/vnd.ms-fontobject',
  '.ttf': 'aplication/font-sfnt'
};



http.createServer(function (request, response) {
  let pathName = url.parse(request.url).path;
  if(pathName === '/'){
    pathName = '/index.html';
  }
  pathName = pathName.substring(1, pathName.length);
  let extName = path.extName(pathName);
  let staticFiles = `${__dirname}/template/${pathName}`;

      if(extName =='.jpg' || extName == '.png' || extName == '.ico' || extName == '.eot' || extName == '.ttf' || extName == '.svg')
      {
          let file = fr.readFileSync(staticFiles);
          res.writeHead(200, {'Content-Type': mimeTypes[extname]});
          res.write(file, 'binary');
          res.end();
      }else {
        fs.readFile(staticFiles, 'utf8', function (err, data) {
          if(!err){
            res.writeHead(200, {'Content-Type': mimeTypes[extname]});
            res.end(data);
          }else {
            res.writeHead(404, {'Content-Type': 'text/html;charset=utf8'});
            res.write(`<strong>${staticFiles}</strong>File is not found.`);
          }
          res.end();
        });
      }
}).listen(8081);


এই কোডটির সাথে আপনার কিছু ব্যাখ্যা এলোগ যুক্ত করা উচিত।
অভিনব গৌনিয়াল

1

আপনি যদি কোনও পূর্বশর্ত ছাড়াই আল্ট্রা-লাইট HTTP সার্ভারে আগ্রহী হন তবে আপনার একবারে দেখে নেওয়া উচিত: মঙ্গুজ



0

আপনি অনুরোধগুলি কেন বাদ পড়ছে তাও জিজ্ঞাসা করেছিলেন - আপনার মামলার নির্দিষ্ট কারণ কী তা নিশ্চিত নয়, তবে সামগ্রিকভাবে আপনি ডেডিকেটেড মিডলওয়্যার (এনজিনেক্স, এস 3, সিডিএন) ব্যবহার করে আরও ভাল সার্ভার স্ট্যাটিক সামগ্রী কারণ এই নেটওয়ার্কিং প্যাটার্নটির জন্য নোড সত্যিই অনুকূলিত নয়। আরো ব্যাখ্যার এখানে (বুলেট 13) দেখুন: http://goldbergyoni.com/checklist-best-practice-of-node-js-in-production/

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