Gibt es das gebrauchsfertige Tool Node.j (installiert mit npm
), mit dem ich Ordnerinhalte als Dateiserver über HTTP verfügbar machen kann?
Beispiel, wenn ich habe
D:\Folder\file.zip
D:\Folder\file2.html
D:\Folder\folder\file-in-folder.jpg
Ab D:\Folder\
node node-file-server.js
dann konnte ich über auf die Datei zugreifen
http://hostname/file.zip
http://hostname/file2.html
http://hostname/folder/file-in-folder.jpg
Warum löscht der statische Dateiserver meines Knotens Anforderungen? Verweisen Sie auf einige mystische
Standardknoten.js statischer Dateiserver
Welches Framework sollte ich verwenden, wenn es kein solches Tool gibt?
node.js
http
fileserver
Paul Verest
quelle
quelle
Antworten:
Eine gute "gebrauchsfertige Tool" -Option könnte http-server sein:
Um es zu benutzen:
Oder so:
Probieren Sie es aus: https://github.com/nodeapps/http-server
quelle
http-server -a localhost
habe er dun.http-server -a localhost -p 80
--cors
Access-Control-Allow-Origin:*
zusammen mit den Antwortheadern zu senden (dh beim Bereitstellen einer JSON-Datei)npx http-server
- npx verwandelt es in einen Einzeiler, der die erforderlichen Dateien herunterlädt und ausführt.Wenn Sie kein fertiges Tool verwenden möchten, können Sie den folgenden Code verwenden, wie von mir unter https://developer.mozilla.org/en-US/docs/Node_server_without_framework gezeigt :
UPDATE Wenn Sie von einer externen Anforderung / Datei auf Ihren Server zugreifen müssen, müssen Sie das CORS in Ihrer node.js-Datei überwinden, indem Sie Folgendes schreiben, wie in einer vorherigen Antwort hier erwähnt
AKTUALISIEREN
Wie Adrian erwähnt, in den Kommentaren, schrieb er einen ES6 Code mit einer umfassenden Erläuterung hier , ich erneut veröffentlichen nur seinen Code unten, von der ursprünglichen Website aus irgendeinem Grund den Code im Falle gegangen:
quelle
response.writeHead(200
sollte seinresponse.writeHead(404
;)../../etc/password
. gist.github.com/amejiarosario/53afae82e18db30dadc9bc39035778e5pathname = pathname.replace(/^(\.)+/, '.');
Für Benutzer, die einen Server wünschen, der über das NodeJS-Skript ausgeführt werden kann:
Sie können expressjs / serve-static verwenden, das ersetzt
connect.static
(das ab Connect 3 nicht mehr verfügbar ist):myapp.js:
und dann von der Kommandozeile:
$ npm install finalhandler serve-static
$ node myapp.js
quelle
npm install filehandler
und das Paket ist imnode_modules
Verzeichnis aufgeführt. Aber wenn ichmyapp.js
Node starte, wird ein Fehler ausgegeben, der besagtError: cannot find module filehandler
. Wenn ich das zum Laden des Dateihandlers erforderliche Ststment auskommentiere, lädt die App Serve-Static einwandfrei. Es sieht also so aus, als ob mit dem Filhandler-Paket etwas nicht stimmt. Heute ist der 12. Dezember 2014, also hat sich das Paket möglicherweise geändert, seit diese Antwort veröffentlicht wurde?final
Handler nichtfile
Ich weiß, dass es kein Knoten ist, aber ich habe Pythons SimpleHTTPServer verwendet:
Es funktioniert gut und kommt mit Python.
quelle
python -m http.server [port]
(das erwähnte ist für Python2)php -S localhost:8000
connect könnte das sein, wonach Sie suchen.
Einfach zu installieren mit:
Dann könnte der grundlegendste statische Dateiserver wie folgt geschrieben werden:
quelle
connect.static
. siehe meine Antwort unten für einen Ersatzrequire
fähigen Modul "Serve-Static" existiert.Installieren Sie Express mit npm: https://expressjs.com/en/starter/installing.html
Erstellen Sie eine Datei mit dem Namen server.js auf derselben Ebene wie index.html mit folgendem Inhalt:
Wenn Sie es an einem anderen Ort ablegen möchten, legen Sie den Pfad in der dritten Zeile fest:
CD in den Ordner mit Ihrer Datei und führen Sie den Knoten mit diesem Befehl von der Konsole aus aus:
Navigieren Sie zu localhost: 8080
quelle
Cannot GET /
. Ich verwende AWS EC2, um den Server auszuführen.path.join(__dirname, 'public')
ist plattformübergreifender.One-line ™ Proofs statt Versprechen
Der erste ist
http-server
,hs
- LinkDer zweite ist
serve
von ZEIT.co - LinkIm Folgenden finden Sie verfügbare Optionen, wenn dies Ihnen bei der Entscheidung hilft.
Wenn Sie auf Änderungen achten müssen
hostr
, schreiben Sie die Antwort von Henry Tseng gutquelle
NUR DEMO / PROTO SERVER
Wenn das alles ist, was Sie brauchen, versuchen Sie Folgendes:
Hinweis: Sie müssen "/index.html" als Teil Ihrer Adresse verwenden, dh " http: // localhost: 3000 / index.html ".
quelle
index.html
als Teil Ihrer Adresse fügen Sie einfachif (req.url === '/') req.url = '/index.html';
direkt nachres.writeHead(200);
.const stream = fs.createReadStream(...); stream.pipe(res);
ist alles was Sie brauchenEs gibt einen anderen statischen Webserver, der ganz nett ist: die Browsersynchronisation.
Es kann mit dem Node Package Manager heruntergeladen werden:
Navigieren Sie nach der Installation in der cmd-Eingabeaufforderung zum Projektordner und führen Sie einfach Folgendes aus:
Es werden alle Dateien im aktuellen Ordner des Browsers bereitgestellt.
Weitere Informationen finden Sie in BrowserSync
Vielen Dank.
quelle
--files
Flag angegebenen Dateien ändern (nb. Sie müssen nicht angeben./*
- nur diejenigen, die Browsersync aktiv auf Aktualisierungen überwachen soll, z .css/*.css
)Ich hatte mit keiner der Antworten auf dieser Seite viel Glück, aber unten schien es den Trick zu tun.
Fügen Sie eine
server.js
Datei mit folgendem Inhalt hinzu:Stellen Sie außerdem sicher, dass Sie benötigen
express
. Führen Sieyarn add express --save
odernpm install express --save
abhängig von Ihrem Setup (ich kann empfehlen,yarn
es ist ziemlich schnell).Sie können
dist
in den Ordner wechseln, in dem Sie Ihren Inhalt bereitstellen. Für mein einfaches Projekt habe ich keinen Ordner bereitgestellt, daher habe ich einfach dendist
Dateinamen entfernt.Dann kannst du rennen
node server.js
. Da ich mein Projekt auf einen Heroku-Server hochladen musste, musste ich meinerpackage.json
Datei Folgendes hinzufügen :quelle
Wenn Sie das Express-Framework verwenden , ist diese Funktionalität sofort einsatzbereit.
Gehen Sie folgendermaßen vor, um eine einfache Datei-Serving-App einzurichten:
quelle
Hier ist mein statisches Datei-Web-Server-Haustierprojekt für eine Datei / ein leichtes node.js ohne Abhängigkeit, von dem ich glaube, dass es ein schnelles und umfangreiches Tool ist, dessen Verwendung so einfach ist wie die Ausgabe dieses Befehls auf Ihrem Linux / Unix / macOS-Terminal ( oder termux unter Android), wenn node.js (oder
nodejs-legacy
unter Debian / Ubuntu) installiert ist:(In der Dokumentation sind verschiedene Befehle für Windows-Benutzer vorhanden.)
Es unterstützt verschiedene Dinge, von denen ich glaube, dass sie nützlich sind.
curl pad.js.org | node - -h
[sudo] npm install -g pad.js
und verwenden Sie dann die installierte Version, um Zugriff auf die folgenden Optionen zu erhalten:pad -h
[sudo] docker run --restart=always -v /files:/files --name pad.js -d -p 9090:9090 quay.io/ebraminio/pad.js
Die oben beschriebenen Funktionen sind größtenteils auf der Hauptseite des Tools http://pad.js.org dokumentiert, das nach einem netten Trick auch der Ort ist, von dem aus die Tool-Quelle selbst bereitgestellt wird!
Die Tool-Quelle befindet sich auf GitHub und freut sich über Ihr Feedback, Ihre Feature-Anfragen und Ihre Fragen!
quelle
Ab [email protected] wurde
npm
neben der üblichen npm eine neue Binärdatei installiertnpx
. Nun also ein Liner zum Erstellen eines statischen http-Servers aus dem aktuellen Verzeichnis:oder
quelle
Für eine gesunde Leistungssteigerung mit Node zur Bereitstellung statischer Ressourcen empfehle ich die Verwendung von Buffet . Es funktioniert ähnlich wie ein Webanwendungsbeschleuniger, der auch als Cache-HTTP-Reverse-Proxy bezeichnet wird, lädt jedoch nur das ausgewählte Verzeichnis in den Speicher.
Wir verwenden es auf der codePile-Site und haben auf einer Seite, die 25 Ressourcen unter einer Last von 1k gleichzeitiger Benutzerverbindung herunterlädt, einen Anstieg von ~ 700 Anfragen / Sek. Auf> 4k Anfragen / Sek. Festgestellt.
Beispiel:
quelle
Schauen Sie sich diesen Link an .
Sie müssen nur das Express-Modul von installieren
node js
.Sie können auf Ihre Datei wie http: //hostname/Folder/file.zip zugreifen
quelle
Unten hat bei mir funktioniert:
Erstellen Sie eine Datei
app.js
mit folgendem Inhalt:Erstellen Sie eine Datei
index.html
mit folgendem Inhalt:Starten Sie eine Befehlszeile:
Laufen Sie unten in
cmd
:Gehe unter die URL in Chrom:
Das ist alles. Ich hoffe, das hilft.
Quelle: https://nodejs.org/en/knowledge/HTTP/servers/how-to-serve-static-files/
quelle
Sie können versuchen , mir zu dienen
Die Verwendung ist so einfach:
Das ist alles.
PD: Der standardmäßig bereitgestellte Ordner ist "public".
quelle
Hier ist ein weiterer einfacher Webserver.
https://www.npmjs.com/package/hostr
Installieren
Arbeitsdirektor wechseln
Und Start
quelle
In plain node.js:
Dies ist ein einfacher node.js-Server, der nur angeforderte Dateien in einem bestimmten Verzeichnis bereitstellt.
Verwendungszweck:
folder
kann je nachserver.js
Standort absolut oder relativ sein . Der Standardwert.
ist das Verzeichnis, in dem Sie dennode server.js
Befehl ausführen .port
ist standardmäßig 8080, Sie können jedoch jeden in Ihrem Betriebssystem verfügbaren Port angeben.In Ihrem Fall würde ich tun:
Sie können die Dateien unter
D:\Folder
von einem Browser aus durch Eingabe durchsuchenhttp://127.0.0.1:8080/somefolder/somefile.html
quelle
Es ist noch nicht auf NPM, aber ich habe einen einfachen statischen Server auf Express erstellt, mit dem Sie auch Formularübermittlungen akzeptieren und über einen Transaktions-E-Mail-Dienst per E-Mail versenden können (Sendgrid für jetzt, Mandrill kommt).
https://github.com/jdr0dn3y/nodejs-StatServe
quelle
Zum Wohle der Suchenden gefiel mir die Antwort von Jakub g, aber ich wollte ein wenig Fehler behandeln. Natürlich ist es am besten, Fehler richtig zu behandeln , aber dies sollte verhindern, dass eine Site angehalten wird, wenn ein Fehler auftritt. Code unten:
quelle
Installieren Sie zuerst den Node-Static-Server über
npm install node-static -g
-g, um ihn global auf Ihrem System zu installieren. Navigieren Sie dann zu dem Verzeichnis, in dem sich Ihre Dateien befinden, starten Sie den Serverstatic
, indem Sie Port 8080 abhören, navigieren Sie zum Browser und geben Sie localhost: 8080 / yourhtmlfilename ein .quelle
Sie können hierfür das NPM- Serve- Paket verwenden. Wenn Sie das NodeJS-Material nicht benötigen, ist es ein schnelles und einfach zu verwendendes Tool:
1 - Installieren Sie das Paket auf Ihrem PC:
2 - Servieren Sie Ihren statischen Ordner mit
serve <path>
:Es zeigt Ihnen, an welchem Port Ihr statischer Ordner bereitgestellt wird. Navigieren Sie einfach zum Host wie folgt:
quelle
npm
der Node Package Manager ist, also verwenden Sie tatsächlich das NodeJS-ZeugBei der Suche in der NPM-Registrierung https://npmjs.org/search?q=server habe ich den statischen Server https://github.com/maelstrom/static-server gefunden
Das könnte sogar Ordnerinhalte auflisten.
Leider konnten keine Dateien bereitgestellt werden :)
quelle
Ein einfacher statischer Server mit connect
Siehe auch Verwenden von node.js als einfacher Webserver
quelle
Für Entwicklungsarbeiten können Sie (Express 4) https://github.com/appsmatics/simple-httpserver.git verwenden
quelle
quelle
Wenn Sie sich für ultraleichte http-Server ohne Voraussetzungen interessieren, sollten Sie sich Folgendes ansehen: Mungo
quelle
Ich benutze Houston bei der Arbeit und für persönliche Projekte funktioniert es gut für mich.
https://github.com/alejandro/Houston
quelle
Sie haben auch gefragt, warum Anfragen fallen - nicht sicher, was der spezifische Grund für Ihren Fall ist, aber insgesamt sollten Sie statische Inhalte mit dedizierter Middleware (nginx, S3, CDN) besser serverisieren, da Node für dieses Netzwerkmuster wirklich nicht optimiert ist. Weitere Erläuterungen finden Sie hier (Punkt 13): http://goldbergyoni.com/checklist-best-practice-of-node-js-in-production/
quelle