Apakah ada alat siap pakai Node.js (diinstal dengan npm
), yang akan membantu saya mengekspos konten folder sebagai server file melalui HTTP.
Contoh, jika saya punya
D:\Folder\file.zip
D:\Folder\file2.html
D:\Folder\folder\file-in-folder.jpg
Kemudian mulai D:\Folder\
node node-file-server.js
saya bisa mengakses file melalui
http://hostname/file.zip
http://hostname/file2.html
http://hostname/folder/file-in-folder.jpg
Mengapa node saya menjatuhkan permintaan server file statis? referensi beberapa mistis
server file statis node.js standar
Jika tidak ada alat seperti itu, kerangka apa yang harus saya gunakan?
Terkait: Server file statis dasar di NodeJS
node.js
http
fileserver
Paul Verest
sumber
sumber
Jawaban:
Opsi "alat siap pakai" yang bagus bisa berupa http-server:
Untuk menggunakannya:
Atau, seperti ini:
Lihat itu: https://github.com/nodeapps/http-server
sumber
http-server -a localhost
punya er dun.http-server -a localhost -p 80
--cors
untuk mengirimAccess-Control-Allow-Origin:*
bersama dengan header respons (yaitu ketika melayani file json)npx http-server
- npx mengubahnya menjadi satu-liner yang mengunduh file yang diperlukan dan menjalankannya.Jika Anda tidak ingin menggunakan alat siap pakai, Anda dapat menggunakan kode di bawah ini, seperti yang ditunjukkan oleh saya di https://developer.mozilla.org/en-US/docs/Node_server_without_framework :
PEMBARUAN Jika Anda perlu mengakses server Anda dari permintaan / file eksternal, Anda perlu mengatasi CORS, dalam file node.js Anda dengan menulis di bawah ini, seperti yang saya sebutkan dalam jawaban sebelumnya di sini
MEMPERBARUI
Seperti yang disebutkan Adrian, dalam komentarnya, dia menulis kode ES6 dengan penjelasan lengkap di sini , saya hanya memposting ulang kodenya di bawah, jika kode tersebut hilang dari situs asli dengan alasan apa pun:
sumber
response.writeHead(200
seharusnyaresponse.writeHead(404
;)../../etc/password
hal - hal. gist.github.com/amejiarosario/53afae82e18db30dadc9bc39035778e5pathname = pathname.replace(/^(\.)+/, '.');
Untuk orang yang menginginkan server dapat dijalankan dari dalam skrip NodeJS:
Anda dapat menggunakan expressjs / serve-static yang menggantikan
connect.static
(yang tidak lagi tersedia pada koneksi 3):myapp.js:
dan kemudian dari baris perintah:
$ npm install finalhandler serve-static
$ node myapp.js
sumber
npm install filehandler
dan paket terdaftar dinode_modules
direktori. Tetapi ketika saya menjalankanmyapp.js
node melempar kesalahan, mengatakanError: cannot find module filehandler
. Jika saya mengomentari ststment yang diperlukan untuk memuat filehandler, aplikasi ini memuat statis-servis dengan baik, jadi sepertinya ada sesuatu yang salah dengan paket filhandler. Hari ini tanggal 12 Desember 2014, jadi mungkin paketnya sudah berubah sejak jawaban ini diposting?final
handler tidakfile
Saya tahu ini bukan Node, tapi saya telah menggunakan SimpleHTTPServer Python:
Ini bekerja dengan baik dan dilengkapi dengan Python.
sumber
python -m http.server [port]
(yang disebutkan adalah untuk Python2)php -S localhost:8000
terhubung bisa menjadi apa yang Anda cari.
Dipasang dengan mudah dengan:
Kemudian file server statis paling dasar dapat ditulis sebagai:
sumber
connect.static
; lihat jawaban saya di bawah ini untuk penggantirequire
modul mampu terpisah "melayani-statis".Instal express menggunakan npm: https://expressjs.com/en/starter/installing.html
Buat file bernama server.js di tingkat yang sama dengan index.html Anda dengan konten ini:
Jika Anda ingin meletakkannya di lokasi yang berbeda, setel path di baris ketiga:
CD ke folder yang berisi file Anda dan jalankan node dari konsol dengan perintah ini:
Telusuri ke localhost: 8080
sumber
Cannot GET /
. Saya menggunakan AWS EC2 untuk menjalankan server.path.join(__dirname, 'public')
lebih lintas platform.Satu-baris ™ Bukti alih-alih janji
Yang pertama adalah
http-server
,hs
- tautanYang kedua adalah
serve
dengan ZEIT.co - linkBerikut ini adalah opsi yang tersedia, jika ini yang membantu Anda memutuskan.
Jika Anda perlu melihat perubahan, lihat
hostr
, kredit jawaban Henry Tsengsumber
HANYA DEMO / PROTO SERVER
Jika itu yang Anda butuhkan, coba ini:
catatan: Anda perlu menggunakan "/index.html" sebagai bagian dari alamat Anda yaitu " http: // localhost: 3000 / index.html "
sumber
index.html
sebagai bagian dari alamat Anda, tambahkan sajaif (req.url === '/') req.url = '/index.html';
setelahnyares.writeHead(200);
.const stream = fs.createReadStream(...); stream.pipe(res);
adalah yang Anda butuhkanAda server web statis lain yang cukup bagus: browser-sync.
Itu dapat diunduh menggunakan manajer paket simpul:
Setelah instalasi, navigasikan ke folder proyek di cmd prompt dan jalankan saja yang berikut:
Ini akan mulai melayani semua file di folder saat ini di browser.
Lebih banyak dapat ditemukan dari BrowserSync
Terima kasih.
sumber
--files
flag berubah (nb. Anda tidak perlu menentukan./*
- hanya yang Anda inginkan agar Browsersync secara aktif mengawasi pembaruan, misalnya .css/*.css
)Saya belum beruntung dengan salah satu jawaban di halaman ini, namun, di bawah ini sepertinya berhasil.
Tambahkan
server.js
file dengan konten berikut:Pastikan juga Anda membutuhkannya
express
. Jalankanyarn add express --save
ataunpm install express --save
tergantung pada pengaturan Anda (saya dapat merekomendasikanyarn
itu cukup cepat).Anda dapat mengubah
dist
ke folder apa pun yang Anda sajikan. Untuk proyek sederhana saya, saya tidak melayani dari folder apa pun, jadi saya cukup menghapusdist
nama file.Maka Anda dapat lari
node server.js
. Karena saya harus mengunggah proyek saya ke server Heroku, saya perlu menambahkan yang berikut kepackage.json
file saya :sumber
Jika Anda menggunakan kerangka kerja Express , fungsi ini siap untuk digunakan.
Untuk menyiapkan aplikasi penyajian file sederhana lakukan ini:
sumber
Ini adalah proyek statis server web web server satu file / ringan node.js saya tanpa ketergantungan yang saya percaya adalah alat cepat dan kaya yang penggunaannya semudah mengeluarkan perintah ini pada terminal Linux / Unix / macOS Anda ( atau termux di Android) ketika node.js (atau
nodejs-legacy
di Debian / Ubuntu) diinstal:(perintah berbeda ada untuk pengguna Windows pada dokumentasi)
Ini mendukung berbagai hal yang menurut saya bermanfaat,
curl pad.js.org | node - -h
[sudo] npm install -g pad.js
dan kemudian gunakan versi instalasinya untuk memiliki akses ke opsinya:pad -h
[sudo] docker run --restart=always -v /files:/files --name pad.js -d -p 9090:9090 quay.io/ebraminio/pad.js
Fitur-fitur yang dijelaskan di atas sebagian besar didokumentasikan pada halaman utama alat http://pad.js.org yang oleh beberapa trik bagus yang saya gunakan juga merupakan tempat sumber alat itu sendiri juga dilayani dari!
Sumber alat ada di GitHub yang menyambut umpan balik Anda, permintaan fitur dan !s!
sumber
Dari [email protected],
npm
mulai menginstal biner baru di samping npm yang biasa dipanggilnpx
. Jadi sekarang, satu liner untuk membuat server http statis dari direktori saat ini:atau
sumber
Untuk peningkatan kinerja yang sehat menggunakan node untuk melayani sumber daya statis, saya sarankan menggunakan Buffet . Ia bekerja mirip dengan akselerator aplikasi web yang juga dikenal sebagai caching HTTP reverse proxy tetapi hanya memuat direktori yang dipilih ke dalam memori.
Kami menggunakannya di situs codePile dan menemukan peningkatan ~ 700 permintaan / detik untuk> 4k permintaan / detik pada halaman yang mengunduh 25 sumber daya di bawah 1k beban koneksi pengguna bersamaan.
Contoh:
sumber
Lihatlah tautan itu .
Anda hanya perlu menginstal modul express dari
node js
.Anda dapat mengakses file Anda seperti http: //hostname/Folder/file.zip
sumber
Di bawah ini bekerja untuk saya:
Buat file
app.js
dengan konten di bawah ini:Buat file
index.html
dengan konten di bawah ini:Mulai baris perintah:
Jalankan di bawah ini di
cmd
:Goto di bawah URL, di chrome:
Itu saja. Semoga itu bisa membantu.
Sumber: https://nodejs.org/en/knowledge/HTTP/servers/how-to-serve-static-files/
sumber
Anda dapat mencoba melayani saya
Menggunakannya sangat mudah:
Itu saja.
PD: Folder yang dilayani secara default adalah "publik".
sumber
Inilah server web sederhana lainnya.
https://www.npmjs.com/package/hostr
Install
Ubah direktur kerja
Dan mulai
sumber
Dalam node.js polos:
Ini adalah server node.js sederhana yang hanya melayani file yang diminta dalam direktori tertentu.
Pemakaian:
folder
mungkin absolut atau relatif tergantung padaserver.js
lokasi. Nilai default.
adalah direktori yang Anda jalankannode server.js
perintah.port
secara default adalah 8080 tetapi Anda dapat menentukan port apa saja yang tersedia di OS Anda.Dalam kasus Anda, saya akan melakukan:
Anda dapat menelusuri file di bawah
D:\Folder
dari browser dengan mengetikhttp://127.0.0.1:8080/somefolder/somefile.html
sumber
Itu bukan pada NPM, namun, saya membangun server statis sederhana pada Express yang juga memungkinkan Anda untuk menerima pengiriman formulir dan mengirimkannya melalui layanan email transaksional (Sendgrid untuk saat ini, Mandrill datang).
https://github.com/jdr0dn3y/nodejs-StatServe
sumber
Demi kepentingan para pencari, saya menyukai jawaban Jakub g, tetapi ingin sedikit penanganan kesalahan. Jelas yang terbaik adalah menangani kesalahan dengan benar , tetapi ini akan membantu mencegah situs berhenti jika terjadi kesalahan. Kode di bawah ini:
sumber
Pertama instal server simpul-statis via
npm install node-static -g
-g adalah menginstalnya secara global pada sistem Anda, kemudian navigasikan ke direktori tempat file Anda berada, mulai server denganstatic
itu mendengarkan pada port 8080, naviaget ke browser dan ketik localhost: 8080 / yourhtmlfilename .sumber
Anda dapat menggunakan paket servis NPM untuk ini, jika Anda tidak membutuhkan barang NodeJS itu adalah alat yang cepat dan mudah digunakan:
1 - Instal paket pada PC Anda:
2 - Sajikan folder statis Anda dengan
serve <path>
:Ini akan menunjukkan kepada Anda port mana folder statis Anda sedang dilayani, cukup arahkan ke host seperti:
sumber
npm
adalah manajer paket simpul sehingga Anda sebenarnya menggunakan barangMencari di NPM registry https://npmjs.org/search?q=server , saya telah menemukan static-server https://github.com/maelstrom/static-server
Itu bahkan dapat membuat daftar isi folder.
Sayangnya, tidak dapat melayani file :)
sumber
Static-Server sederhana menggunakan koneksi
Lihat juga Menggunakan node.js sebagai server web sederhana
sumber
Untuk pekerjaan dev, Anda dapat menggunakan (mengekspresikan 4) https://github.com/appsmatics/simple-httpserver.git
sumber
sumber
Jika Anda tertarik pada server http ultra-ringan tanpa prasyarat Anda harus melihat: mongoose
sumber
Saya menggunakan Houston di tempat kerja dan untuk proyek pribadi, itu bekerja dengan baik untuk saya.
https://github.com/alejandro/Houston
sumber
Anda juga bertanya mengapa permintaan menurun - tidak yakin apa alasan spesifik pada kasus Anda, tetapi secara keseluruhan Anda lebih baik konten statis server menggunakan middleware khusus (nginx, S3, CDN) karena Node benar-benar tidak dioptimalkan untuk pola jaringan ini. Lihat penjelasan lebih lanjut di sini (bullet 13): http://goldbergyoni.com/checklist-best-practice-of-node-js-in-production/
sumber