Существует ли готовый к использованию инструмент Node.js (установлен с 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
Почему статический файловый сервер моего узла отбрасывает запросы? ссылаться на некоторые мистические
стандартный файловый сервер node.js
Если такого инструмента нет, какой фреймворк мне использовать?
Связанный: Базовый статический файловый сервер в NodeJS
node.js
http
fileserver
Пол Верест
источник
источник
Ответы:
Хорошим вариантом «готового к использованию инструмента» может быть http-сервер:
Чтобы использовать это:
Или вот так:
Проверьте это: https://github.com/nodeapps/http-server
источник
http-server -a localhost
получил дун.http-server -a localhost -p 80
--cors
отправлятьAccess-Control-Allow-Origin:*
вместе с заголовками ответа (т. е. при передаче файлаnpx http-server
- npx превращает его в однострочник, который загружает необходимые файлы и запускает его.Если вы не хотите использовать готовый инструмент, вы можете использовать приведенный ниже код, как я продемонстрировал на https://developer.mozilla.org/en-US/docs/Node_server_without_framework :
ОБНОВЛЕНИЕ Если вам нужен доступ к вашему серверу из внешнего запроса / файла, вам нужно преодолеть CORS в файле node.js, написав ниже, как я уже упоминал в предыдущем ответе здесь
ОБНОВИТЬ
Как отметил Адриан, в комментариях он написал код ES6 с полным объяснением. здесь , я просто повторно разместить свой код , приведенный ниже, в случае , если код ушел с оригинального сайта по любой причине:
источник
response.writeHead(200
должно бытьresponse.writeHead(404
;)../../etc/password
. gist.github.com/amejiarosario/53afae82e18db30dadc9bc39035778e5pathname = pathname.replace(/^(\.)+/, '.');
Для людей, которые хотят запустить сервер из скрипта NodeJS:
Вы можете использовать expressjs / serve-static, который заменяет
connect.static
(который больше не доступен с connect 3):myapp.js:
а затем из командной строки:
$ npm install finalhandler serve-static
$ node myapp.js
источник
npm install filehandler
и пакет указан вnode_modules
каталоге. Но когда я запускаюmyapp.js
узел, выдает ошибку, говоряError: cannot find module filehandler
. Если я закомментирую обязательный ststment для загрузки обработчика файлов, приложение прекрасно загружает serve-static, поэтому похоже, что с пакетом filhandler что-то не так. Сегодня 12 декабря 2014 года, поэтому, возможно, пакет изменился с момента публикации этого ответа?final
обработчикfile
Я знаю, что это не Node, но я использовал Python's SimpleHTTPServer:
Он хорошо работает и поставляется с Python.
источник
python -m http.server [port]
(упомянутый для Python2)php -S localhost:8000
подключения может быть то, что вы ищете.
Легко устанавливается с:
Тогда самый простой статический файловый сервер может быть записан как:
источник
connect.static
; см. мой ответ ниже для заменыrequire
способном модуле «serve-static».Установите экспресс, используя npm: https://expressjs.com/en/starter/install.html
Создайте файл с именем server.js на том же уровне вашего index.html с этим содержанием:
Если вы хотите поместить его в другое место, укажите путь в третьей строке:
CD к папке, содержащей ваш файл и запустить узел из консоли с этой командой:
Просмотреть до localhost: 8080
источник
Cannot GET /
. Я использую AWS EC2 для запуска сервера.path.join(__dirname, 'public')
более кроссплатформенный.One-line ™ Доказательства вместо обещаний
Во-первых
http-server
,hs
- ссылкаВторой
serve
от ZEIT.co - ссылкаНиже приведены доступные варианты, если это то, что поможет вам решить.
Если вам нужно следить за изменениями, посмотрите
hostr
, отметьте ответ Генри Ценгаисточник
ТОЛЬКО ДЕМО / ПРОТО СЕРВЕР
Если это все, что вам нужно, попробуйте это:
примечание: вам нужно использовать «/index.html» как часть вашего адреса, т.е. « http: // localhost: 3000 / index.html »
источник
index.html
качестве части своего адреса, просто добавьтеif (req.url === '/') req.url = '/index.html';
сразу послеres.writeHead(200);
.const stream = fs.createReadStream(...); stream.pipe(res);
это все, что вам нужноЕсть еще один неплохой статический веб-сервер: браузер-синхронизация.
Его можно скачать с помощью менеджера пакетов узла:
После установки перейдите к папке проекта в командной строке cmd и просто выполните следующее:
Это начнет обслуживать все файлы в текущей папке в браузере.
Больше можно узнать из BrowserSync
Спасибо.
источник
--files
изменяются файлы, указанные в флаге (примечание: указывать не нужно./*
- только те, которые вы хотите, чтобы Browsersync активно следил за обновлениями, например, .css/*.css
)Мне не очень повезло с любым из ответов на этой странице, однако, ниже, казалось, добился цели.
Добавьте
server.js
файл со следующим содержанием:Также убедитесь, что вам требуется
express
. Запуститеyarn add express --save
или вnpm install express --save
зависимости от вашей настройки (я могу порекомендоватьyarn
это довольно быстро).Вы можете перейти
dist
в любую папку, в которой вы размещаете свой контент. Для моего простого проекта я не служил ни в одной папке, поэтому я просто удалилdist
имя файла.Тогда вы можете бежать
node server.js
. Поскольку я должен был загрузить свой проект на сервер Heroku, мне нужно было добавить следующее в мойpackage.json
файл:источник
Если вы используете платформу Express , эта функциональность готова к работе.
Чтобы настроить простое приложение для работы с файлами, просто сделайте это:
источник
Вот мой любимый проект с однофайловым / легковесным файловым веб-сервером node.js, не имеющий зависимости, который, я считаю, является быстрым и многофункциональным инструментом, использовать его так же просто, как выполнить эту команду на вашем терминале Linux / Unix / macOS ( или termux на Android), когда установлен node.js (или
nodejs-legacy
на Debian / Ubuntu):(существуют разные команды для пользователей Windows в документации)
Он поддерживает разные вещи, которые я считаю полезными,
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, который с помощью некоторого приятного трюка, который я использовал, также служит источником для самого источника инструмента!
Источник инструмента находится на GitHub, который приветствует ваши отзывы, пожелания и пожелания!
источник
С npm@5.2.0
npm
начал устанавливать новый бинарный файл вместе с обычным npmnpx
. Итак, теперь один лайнер для создания статического http-сервера из текущего каталога:или
источник
Для здорового повышения производительности при использовании узла для обслуживания статических ресурсов я рекомендую использовать Buffet . Он работает так же, как ускоритель веб-приложений, также известный как кеширующий обратный прокси-сервер HTTP, но он просто загружает выбранный каталог в память.
Мы используем его на сайте codePile и обнаружили увеличение на ~ 700 запросов / сек до> 4 тыс. Запросов / сек на странице, которая загружает 25 ресурсов при нагрузке на одновременное соединение пользователей 1 КБ.
Пример:
источник
Посмотрите на эту ссылку .
Вам нужно только установить экспресс-модуль
node js
.Вы можете получить доступ к вашему файлу, например, http: //hostname/Folder/file.zip
источник
Ниже работало для меня:
Создайте файл
app.js
с содержанием ниже:Создайте файл
index.html
с содержанием ниже:Запустите командную строку:
Запустите ниже в
cmd
:Перейти ниже URL, в Chrome:
Это все. Надеюсь, это поможет.
Источник: https://nodejs.org/en/knowledge/HTTP/servers/how-to-serve-static-files/
источник
Вы можете попробовать служить мне
Используя это так просто:
Это все.
PD: папка, обслуживаемая по умолчанию, является «общедоступной».
источник
Вот еще один простой веб-сервер.
https://www.npmjs.com/package/hostr
устанавливать
Смена рабочего директора
И начать
источник
В простом node.js:
Это простой сервер node.js, который обслуживает только запрошенные файлы в определенном каталоге.
Применение:
folder
может быть абсолютным или относительным в зависимости отserver.js
местоположения. Значением по умолчанию является.
каталог, в котором вы выполняетеnode server.js
команду.port
по умолчанию 8080, но вы можете указать любой порт, доступный в вашей ОС.В вашем случае я бы сделал:
Вы можете просматривать файлы
D:\Folder
в браузере, набравhttp://127.0.0.1:8080/somefolder/somefile.html
источник
Пока что это не для NPM, но я построил простой статический сервер в Express, который также позволяет вам принимать отправленные формы и отправлять их по электронной почте через транзакционную почтовую службу (пока что Sendgrid, ожидается Mandrill).
https://github.com/jdr0dn3y/nodejs-StatServe
источник
Для блага поисковиков мне понравился ответ Якуба, но хотелось немного исправить ошибку. Очевидно , что лучше обрабатывать ошибки должным образом , но это должно помочь предотвратить сайт остановки в случае возникновения ошибки. Код ниже:
источник
Сначала установите node-static server с помощью
npm install node-static -g
-g, чтобы установить его глобально в вашей системе, затем перейдите в каталог, в котором находятся ваши файлы, запустите сервер,static
прослушивающий порт 8080, naviaget для браузера и введите localhost: 8080 / yourhtmlfilename ,источник
Для этого вы можете использовать пакет обслуживания NPM , если вам не нужны NodeJS, это быстрый и простой в использовании инструмент:
1 - Установите пакет на свой компьютер:
2 - Служите вашей статической папке с помощью
serve <path>
:Он покажет вам, какой порт обслуживается ваша статическая папка, просто перейдите к хосту, например:
источник
npm
это менеджер пакетов узлов, так что вы на самом деле используете NodeJSПоиск в реестре NPM https://npmjs.org/search?q=server , я нашел статический сервер https://github.com/maelstrom/static-server
Это может даже перечислить содержимое папки.
К сожалению, он не мог обслуживать файлы :)
источник
Простой Static-сервер с использованием Connect
Смотрите также Использование node.js в качестве простого веб-сервера.
источник
Для разработки вы можете использовать (экспресс 4) https://github.com/appsmatics/simple-httpserver.git
источник
источник
Если вы заинтересованы в сверхлегком http-сервере без каких-либо предварительных условий, вам стоит взглянуть на: mongoose
источник
Я использую Хьюстон на работе и для личных проектов, у меня это хорошо работает.
https://github.com/alejandro/Houston
источник
Вы также спросили, почему запросы сбрасываются - не знаете, в чем конкретная причина для вашего случая, но в целом вы улучшаете статическое содержимое сервера с помощью специального промежуточного программного обеспечения (nginx, S3, CDN), потому что Node действительно не оптимизирован для этого сетевого шаблона. Смотрите дальнейшее объяснение здесь (пункт 13): http://goldbergyoni.com/checklist-best-practice-of-node-js-in-production/
источник