Czy jest gotowe narzędzie Node.js (zainstalowane z npm
), które pomogłoby mi ujawnić zawartość folderu jako serwer plików przez HTTP.
Przykład, jeśli mam
D:\Folder\file.zip
D:\Folder\file2.html
D:\Folder\folder\file-in-folder.jpg
Następnie zaczynając za D:\Folder\
node node-file-server.js
, mogłem uzyskać dostęp do pliku przez
http://hostname/file.zip
http://hostname/file2.html
http://hostname/folder/file-in-folder.jpg
Dlaczego mój statyczny serwer plików odrzuca żądania? odnoszą się do mistycznych
standardowy statyczny serwer plików node.js
Jeśli nie ma takiego narzędzia, jakich ram powinienem użyć?
Powiązane: Podstawowy statyczny serwer plików w NodeJS
node.js
http
fileserver
Paul Verest
źródło
źródło
Odpowiedzi:
Dobrym „gotowym do użycia narzędziem” może być serwer http:
Aby go użyć:
Lub tak:
Sprawdź to: https://github.com/nodeapps/http-server
źródło
http-server -a localhost
dostałam dun.http-server -a localhost -p 80
--cors
wysyłaćAccess-Control-Allow-Origin:*
wraz z nagłówkami odpowiedzi (tj. podczas udostępniania pliku json)npx http-server
- npx zamienia go w jeden wiersz, który pobiera niezbędne pliki i uruchamia je.Jeśli nie chcesz używać gotowego narzędzia, możesz użyć poniższego kodu, co pokazałem na https://developer.mozilla.org/en-US/docs/Node_server_without_framework :
AKTUALIZACJA Jeśli potrzebujesz uzyskać dostęp do swojego serwera z zewnętrznego pliku / żądania, musisz pokonać CORS w pliku node.js, pisząc poniżej, jak wspomniałem w poprzedniej odpowiedzi tutaj
AKTUALIZACJA
Jak wspomniał Adrian, w komentarzach napisał kod ES6 z pełnym wyjaśnieniem tutaj , po prostu ponownie zamieszczam jego kod poniżej, na wypadek gdyby kod zniknął z oryginalnej strony z jakiegokolwiek powodu:
źródło
response.writeHead(200
powinno byćresponse.writeHead(404
;)../../etc/password
. gist.github.com/amejiarosario/53afae82e18db30dadc9bc39035778e5pathname = pathname.replace(/^(\.)+/, '.');
Dla osób chcących uruchomić serwer z poziomu skryptu NodeJS:
Możesz użyć expressjs / serve-static, który zastępuje
connect.static
(który nie jest już dostępny od Connect 3):myapp.js:
a następnie z wiersza poleceń:
$ npm install finalhandler serve-static
$ node myapp.js
źródło
npm install filehandler
a pakiet znajduje się wnode_modules
katalogu. Ale kiedy uruchamiammyapp.js
węzeł zgłasza błąd, mówiącError: cannot find module filehandler
. Jeśli skomentuję wymaganą ststment, aby załadować moduł obsługi plików, aplikacja ładuje statyczno-statyczną, więc wygląda na to, że coś jest nie tak z pakietem modułu do obsługi plików. Dzisiaj jest 12 grudnia 2014 roku, więc może pakiet zmienił się od czasu opublikowania tej odpowiedzi?final
handlerfile
Wiem, że to nie jest Węzeł, ale użyłem SimpleHTTPServera Pythona:
Działa dobrze i jest wyposażony w Python.
źródło
python -m http.server [port]
(wspomniany dotyczy Python2)php -S localhost:8000
połączyć może być tym, czego szukasz.
Łatwa instalacja dzięki:
Następnie najbardziej podstawowy statyczny serwer plików można zapisać jako:
źródło
connect.static
; zobacz moją odpowiedź poniżej, abyrequire
zdolnym module „służyć-statycznie”.Zainstaluj ekspres za pomocą npm: https://expressjs.com/en/starter/installing.html
Utwórz plik o nazwie server.js na tym samym poziomie indeksu.html z tą zawartością:
Jeśli chcesz umieścić go w innym miejscu, ustaw ścieżkę w trzecim wierszu:
CD do folderu zawierającego plik i uruchom węzeł z konsoli za pomocą tego polecenia:
Przejdź do localhost: 8080
źródło
Cannot GET /
. Do uruchomienia serwera używam AWS EC2.path.join(__dirname, 'public')
jest bardziej wieloplatformowy.One-line ™ Dowody zamiast obietnic
Pierwszym z nich jest
http-server
,hs
- LinkDrugi to
serve
ZEIT.co - linkPoniżej znajdują się dostępne opcje, jeśli to pomoże ci zdecydować.
Jeśli trzeba obserwować zmiany, zobaczyć
hostr
, kredyt odpowiedź Henry'ego Tseng zaźródło
TYLKO SERWER DEMO / PROTO
Jeśli to wszystko, czego potrzebujesz, spróbuj:
Uwaga: musisz użyć „/index.html” jako części adresu, tj. „ http: // localhost: 3000 / index.html ”
źródło
index.html
jako część adresu wystarczy dodaćif (req.url === '/') req.url = '/index.html';
tuż pores.writeHead(200);
.const stream = fs.createReadStream(...); stream.pipe(res);
to wszystko, czego potrzebujeszJest jeszcze jeden statyczny serwer WWW, który jest całkiem niezły: synchronizacja przeglądarki.
Można go pobrać za pomocą menedżera pakietów węzłów:
Po instalacji przejdź do folderu projektu w wierszu polecenia cmd i uruchom następujące polecenie:
Rozpocznie się catering wszystkich plików w bieżącym folderze w przeglądarce.
Więcej można znaleźć w BrowserSync
Dzięki.
źródło
--files
zmieniają się pliki określone przez flagę (nb. Nie musisz tego określać./*
- tylko te, które chcesz, aby Browsersync aktywnie szukał aktualizacji, np. .css/*.css
)Nie miałem dużo szczęścia z żadną z odpowiedzi na tej stronie, jednak poniższe wydawały się załatwić sprawę.
Dodaj
server.js
plik o następującej treści:Upewnij się także, że potrzebujesz
express
. Uruchomyarn add express --save
lub wnpm install express --save
zależności od konfiguracji (mogę polecić,yarn
że jest dość szybki).Możesz przejść
dist
do dowolnego folderu, w którym udostępniasz swoje treści. W moim prostym projekcie nie wyświetlałem żadnych folderów, więc po prostu usunąłemdist
nazwę pliku.Wtedy możesz uciec
node server.js
. Ponieważ musiałem przesłać swój projekt na serwer Heroku, musiałem dodać do mojegopackage.json
pliku:źródło
Jeśli korzystasz z frameworka Express , ta funkcja jest gotowa do użycia.
Aby skonfigurować prostą aplikację do udostępniania plików, wykonaj następujące czynności:
źródło
Oto mój projekt dla zwierząt domowych na jednym serwerze z jednym plikiem / statycznym plikiem node.js bez żadnych zależności, który moim zdaniem jest szybkim i bogatym narzędziem, którego użycie jest tak proste, jak wydanie polecenia na terminalu Linux / Unix / macOS ( lub termux na Androida), gdy
nodejs-legacy
jest zainstalowany node.js (lub na Debian / Ubuntu):(w dokumentacji istnieją różne polecenia dla użytkowników systemu Windows)
Obsługuje różne rzeczy, które moim zdaniem mogą być przydatne,
curl pad.js.org | node - -h
[sudo] npm install -g pad.js
a następnie użyj jego zainstalowanej wersji, aby uzyskać dostęp do jego opcji:pad -h
[sudo] docker run --restart=always -v /files:/files --name pad.js -d -p 9090:9090 quay.io/ebraminio/pad.js
Funkcje opisane powyżej są w większości udokumentowane na stronie głównej narzędzia http://pad.js.org, która według jakiejś fajnej sztuczki, której użyłem, jest również miejscem, z którego samo źródło narzędzia jest również obsługiwane!
Źródło narzędzia znajduje się na GitHub, który chętnie przyjmuje Twoje opinie, prośby o funkcje i odpowiedzi!
źródło
Od [email protected],
npm
zaczął instalować nowy plik binarny obok zwykłego npm o nazwienpx
. Tak więc teraz jeden liner do stworzenia statycznego serwera http z bieżącego katalogu:lub
źródło
Aby uzyskać zdrowy wzrost wydajności przy użyciu węzła do obsługi zasobów statycznych, zalecam użycie bufora . Działa podobnie jak akcelerator aplikacji internetowych znany również jako buforujące odwrotne proxy HTTP, ale po prostu ładuje wybrany katalog do pamięci.
Używamy go w witrynie codePile i stwierdziliśmy wzrost ~ 700 żądań / s do> 4k żądań / s na stronie, która pobiera 25 zasobów przy obciążeniu równoczesnym połączeniem użytkownika 1k.
Przykład:
źródło
Spójrz na ten link .
Wystarczy zainstalować moduł ekspresowy
node js
.Możesz uzyskać dostęp do swojego pliku, np. Http: //nazwa_hosta/folder/plik.zip
źródło
Poniżej pracował dla mnie:
Utwórz plik
app.js
z poniższą zawartością:Utwórz plik
index.html
z poniższą zawartością:Uruchom wiersz poleceń:
Uruchom poniżej w
cmd
:Idź poniżej adresu URL, w chromie:
To wszystko. Mam nadzieję, że to pomaga.
Źródło: https://nodejs.org/en/knowledge/HTTP/servers/how-to-serve-static-files/
źródło
Możesz spróbować służyć mi
Korzystanie z niego jest takie proste:
To wszystko.
PD: Folder domyślnie obsługiwany to „public”.
źródło
Oto kolejny prosty serwer WWW.
https://www.npmjs.com/package/hostr
zainstalować
Zmień dyrektora roboczego
I zacznij
źródło
W zwykłym node.js:
Jest to prosty serwer node.js, który obsługuje tylko żądane pliki w określonym katalogu.
Stosowanie:
folder
może być bezwzględny lub względny w zależności odserver.js
lokalizacji. Wartością domyślną jest.
katalog, który wykonujesznode server.js
.port
Domyślnie jest to 8080, ale można określić dowolny port dostępny w systemie operacyjnym.W twoim przypadku zrobiłbym:
Możesz przeglądać pliki w
D:\Folder
przeglądarce, pisząchttp://127.0.0.1:8080/somefolder/somefile.html
źródło
Nie jest jeszcze na NPM, ale zbudowałem prosty serwer statyczny na Expressie, który pozwala również akceptować przesyłanie formularzy i wysyłać je pocztą elektroniczną za pośrednictwem transakcyjnej usługi e-mail (na razie Sendgrid, Mandrill).
https://github.com/jdr0dn3y/nodejs-StatServe
źródło
Z korzyścią dla wyszukiwarek podobała mi się odpowiedź Jakuba g, ale chciałem trochę obsługiwać błędy. Oczywiście najlepiej jest prawidłowo obsługiwać błędy , ale powinno to pomóc w zapobieganiu zatrzymaniu witryny w przypadku wystąpienia błędu. Kod poniżej:
źródło
Najpierw zainstaluj serwer z węzłem statycznym przez
npm install node-static -g
-g, aby zainstalować go globalnie w systemie, a następnie przejdź do katalogu, w którym znajdują się twoje pliki, uruchom serwer,static
aby nasłuchiwał na porcie 8080, nawiguj w przeglądarce i wpisz localhost: 8080 / yourhtmlfilename .źródło
Można użyć NPM służyć pakiet dla tego, jeśli nie potrzebujemy NodeJS rzeczy jest to szybkie i łatwe w użyciu narzędzie:
1 - Zainstaluj pakiet na komputerze:
2 - Podaj swój folder statyczny za pomocą
serve <path>
:Pokaże Ci, który port jest obsługiwany przez twój folder statyczny, po prostu przejdź do hosta, na przykład:
źródło
npm
to menedżer pakietów węzłów, więc w rzeczywistości korzystasz z NodeJSPrzeszukując rejestr NPM https://npmjs.org/search?q=server , znalazłem static-server https://github.com/maelstrom/static-server
To może nawet wyświetlać zawartość folderu.
Niestety nie mógł obsłużyć plików :)
źródło
Prosty serwer statyczny za pomocą połączenia
Zobacz także Używanie node.js jako prostego serwera WWW
źródło
Do pracy deweloperskiej możesz użyć (ekspres 4) https://github.com/appsmatics/simple-httpserver.git
źródło
źródło
Jeśli jesteś zainteresowany ultra lekkim serwerem http bez żadnych wymagań, powinieneś spojrzeć na: mangusta
źródło
Używam Houston w pracy i do osobistych projektów, działa dobrze dla mnie.
https://github.com/alejandro/Houston
źródło
Zapytałeś również, dlaczego żądania są odrzucane - nie jestem pewien, jaki jest konkretny powód twojej sprawy, ale ogólnie lepiej lepszą statyczną zawartość serwera za pomocą dedykowanego oprogramowania pośredniego (nginx, S3, CDN), ponieważ Węzeł tak naprawdę nie jest zoptymalizowany dla tego wzorca sieci. Zobacz dalsze wyjaśnienia tutaj (punkt 13): http://goldbergyoni.com/checklist-best-practice-of-node-js-in-production/
źródło