Использование node.js в качестве простого веб-сервера
Я хочу запустить очень простой HTTP-сервер. Каждый запрос GET на example.com
должен получать index.html
для него, а как обычную HTML-страницу (т.е. Тот же опыт, что и при обычных веб-страницах).
Используя приведенный ниже код, я могу прочитать содержимое index.html
. Как я могу служить index.html
в качестве обычной веб-страницы?
var http = require('http');
var fs = require('fs');
var index = fs.readFileSync('index.html');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end(index);
}).listen(9615);
Одно из приведенных ниже предложений является сложным и требует, чтобы я написал строку get
для каждого ресурса (CSS, JavaScript, изображения), который я хочу использовать.
Как я могу обслуживать одну страницу HTML с некоторыми изображениями, CSS и JavaScript?
Ответы
Ответ 1
Для этого вы можете использовать Connect и ServeStatic с Node.js:
-
Установите соединение и подачу статических с NPM
$ npm install connect serve-static
-
Создайте файл server.js со следующим содержимым:
var connect = require('connect');
var serveStatic = require('serve-static');
connect().use(serveStatic(__dirname)).listen(8080, function(){
console.log('Server running on 8080...');
});
-
Запустить с Node.js
$ node server.js
Теперь вы можете перейти на http://localhost:8080/yourfile.html
Ответ 2
Самый простой сервер Node.js это просто:
$ npm install http-server -g
Теперь вы можете запустить сервер с помощью следующих команд:
$ cd MyApp
$ http-server
Если вы используете NPM 5.2.0 или новее, вы можете использовать http-server
не устанавливая его с помощью npx
. Это не рекомендуется для использования в рабочей среде, но это отличный способ быстро запустить сервер на локальном хосте.
$ npx http-server
Или вы можете попробовать это, чтобы открыть веб-браузер и включить запросы CORS:
$ http-server -o --cors
Для получения дополнительных опций ознакомьтесь с документацией по http-server
на GitHub или запустите:
$ http-server --help
Множество других приятных функций и простое развертывание в NodeJitsu.
Feature Forks
Конечно, вы можете легко дополнить функции своей вилкой. Вы можете обнаружить, что это уже было сделано в одном из существующих 800+ форков этого проекта:
Light Server: альтернатива автообновлению
Хорошей альтернативой http-server
является light-server
. Он поддерживает просмотр файлов и автообновление и многие другие функции.
$ npm install -g light-server
$ light-server
Добавить в свой каталог контекстное меню в проводнике Windows
reg.exe add HKCR\Directory\shell\LightServer\command /ve /t REG_EXPAND_SZ /f /d "\"C:\nodejs\light-server.cmd\" \"-o\" \"-s\" \"%V\""
Простой JSON REST сервер
Если вам нужно создать простой REST-сервер для проекта-прототипа, тогда вам может подойти json-server.
Редакторы автообновления
Большинство редакторов веб-страниц и инструментов IDE теперь включают веб-сервер, который будет следить за вашими исходными файлами и автоматически обновлять веб-страницу при их изменении.
Я использую Live Server с кодом Visual Studio.
Текстовый редактор с открытым исходным кодом Brackets также включает статический веб-сервер NodeJS. Просто откройте любой HTML файл в скобках, нажмите "Live Preview", и он запустит статический сервер и откроет ваш браузер на странице. Браузер ** автоматически обновляется каждый раз, когда вы редактируете и сохраняете файл HTML. Это особенно полезно при тестировании адаптивных веб-сайтов. Откройте свою HTML-страницу в нескольких браузерах/размерах окон/устройствах. Сохраните HTML-страницу и сразу посмотрите, работает ли ваш адаптивный материал, поскольку все они автоматически обновляются.
Разработчики PhoneGap
Если вы пишете гибридное мобильное приложение, вам может быть интересно узнать, что команда PhoneGap приняла эту концепцию автоматического обновления вместе со своим новым приложением PhoneGap. Это универсальное мобильное приложение, которое может загружать файлы HTML5 с сервера во время разработки. Это очень хитрый трюк, поскольку теперь вы можете пропустить медленные этапы компиляции/развертывания в цикле разработки для гибридных мобильных приложений, если вы изменяете файлы JS/CSS/HTML - это то, что вы делаете большую часть времени. Они также предоставляют статический веб-сервер NodeJS (запускает phonegap serve
), который обнаруживает изменения файла.
Разработчики PhoneGap + Sencha Touch
Сейчас я широко адаптировал статический сервер PhoneGap и приложение PhoneGap Developer для разработчиков Sencha Touch и jQuery Mobile. Проверьте это на Sencha Touch Live. Поддерживает --qr QR-коды и --localtunnel, которые проксируют ваш статический сервер с вашего настольного компьютера по URL-адресу за пределами вашего брандмауэра! Тонны использования. Массовое ускорение для гибридных мобильных разработчиков.
Cordova + Ionic Framework Разработчики
Локальный сервер и функции автоматического обновления встроены в ionic
инструмент. Просто запустите ionic serve
из папки вашего приложения. Еще лучше... ionic serve --lab
для просмотра автообновления рядом с iOS и Android.
Ответ 3
Проверьте gist. Я воспроизвожу его здесь для справки, но суть была регулярно обновлена.
Node.JS статический файловый веб-сервер. Поместите его на свой путь, чтобы запустить серверы в любом каталоге, принимает необязательный аргумент порта.
var http = require("http"),
url = require("url"),
path = require("path"),
fs = require("fs"),
port = process.argv[2] || 8888;
http.createServer(function(request, response) {
var uri = url.parse(request.url).pathname
, filename = path.join(process.cwd(), uri);
fs.exists(filename, function(exists) {
if(!exists) {
response.writeHead(404, {"Content-Type": "text/plain"});
response.write("404 Not Found\n");
response.end();
return;
}
if (fs.statSync(filename).isDirectory()) filename += '/index.html';
fs.readFile(filename, "binary", function(err, file) {
if(err) {
response.writeHead(500, {"Content-Type": "text/plain"});
response.write(err + "\n");
response.end();
return;
}
response.writeHead(200);
response.write(file, "binary");
response.end();
});
});
}).listen(parseInt(port, 10));
console.log("Static file server running at\n => http://localhost:" + port + "/\nCTRL + C to shutdown");
Обновление
Суть обрабатывает файлы css и js. Я использовал его сам. Использование чтения/записи в "двоичном" режиме не является проблемой. Это просто означает, что файл не интерпретируется как текст библиотекой файлов и не имеет отношения к типу содержимого, возвращенному в ответе.
Проблема с вашим кодом заключается в том, что вы всегда возвращаете контент-тип "text/plain". Вышеприведенный код не возвращает какой-либо тип содержимого, но если вы просто используете его для HTML, CSS и JS, браузер может сделать это очень хорошо. Тип содержимого лучше, чем неправильный.
Обычно тип содержимого представляет собой конфигурацию вашего веб-сервера. Поэтому я сожалею, если это не решит вашу проблему, но это сработало для меня как простой сервер разработки и подумало, что это может помочь некоторым другим людям. Если вам нужны правильные типы контента в ответе, вам либо нужно явно определить их, как joeytwiddle, либо использовать такую библиотеку, как Connect, которая имеет разумные значения по умолчанию. Самое приятное в этом состоит в том, что он простой и автономный (без зависимостей).
Но я чувствую вашу проблему. Итак, вот комбинированное решение.
var http = require("http"),
url = require("url"),
path = require("path"),
fs = require("fs")
port = process.argv[2] || 8888;
http.createServer(function(request, response) {
var uri = url.parse(request.url).pathname
, filename = path.join(process.cwd(), uri);
var contentTypesByExtension = {
'.html': "text/html",
'.css': "text/css",
'.js': "text/javascript"
};
fs.exists(filename, function(exists) {
if(!exists) {
response.writeHead(404, {"Content-Type": "text/plain"});
response.write("404 Not Found\n");
response.end();
return;
}
if (fs.statSync(filename).isDirectory()) filename += '/index.html';
fs.readFile(filename, "binary", function(err, file) {
if(err) {
response.writeHead(500, {"Content-Type": "text/plain"});
response.write(err + "\n");
response.end();
return;
}
var headers = {};
var contentType = contentTypesByExtension[path.extname(filename)];
if (contentType) headers["Content-Type"] = contentType;
response.writeHead(200, headers);
response.write(file, "binary");
response.end();
});
});
}).listen(parseInt(port, 10));
console.log("Static file server running at\n => http://localhost:" + port + "/\nCTRL + C to shutdown");
Ответ 4
Вам не нужен экспресс. Вам не нужно подключаться. Node.js делает http NATIVELY. Все, что вам нужно сделать, это вернуть файл в зависимости от запроса:
var http = require('http')
var url = require('url')
var fs = require('fs')
http.createServer(function (request, response) {
var requestUrl = url.parse(request.url)
response.writeHead(200)
fs.createReadStream(requestUrl.pathname).pipe(response) // do NOT use fs sync methods ANYWHERE on production (e.g readFileSync)
}).listen(9615)
Более полный пример, который гарантирует, что запросы не могут обращаться к файлам под базовым каталогом, и делает правильную обработку ошибок:
var http = require('http')
var url = require('url')
var fs = require('fs')
var path = require('path')
var baseDirectory = __dirname // or whatever base directory you want
var port = 9615
http.createServer(function (request, response) {
try {
var requestUrl = url.parse(request.url)
// need to use path.normalize so people can't access directories underneath baseDirectory
var fsPath = baseDirectory+path.normalize(requestUrl.pathname)
var fileStream = fs.createReadStream(fsPath)
fileStream.pipe(response)
fileStream.on('open', function() {
response.writeHead(200)
})
fileStream.on('error',function(e) {
response.writeHead(404) // assume the file doesn't exist
response.end()
})
} catch(e) {
response.writeHead(500)
response.end() // end the response so browsers don't hang
console.log(e.stack)
}
}).listen(port)
console.log("listening on port "+port)
Ответ 5
Я думаю, что часть, которую вы сейчас упускаете, это то, что вы отправляете:
Content-Type: text/plain
Если вы хотите, чтобы веб-браузер отображал HTML, вы должны изменить его на:
Content-Type: text/html
Ответ 6
Шаг1 (внутри командной строки [надеюсь, вы cd TO YOUR FOLDER]): npm install express
Шаг 2. Создайте файл server.js
var fs = require("fs");
var host = "127.0.0.1";
var port = 1337;
var express = require("express");
var app = express();
app.use(express.static(__dirname + "/public")); //use static files in ROOT/public folder
app.get("/", function(request, response){ //root dir
response.send("Hello!!");
});
app.listen(port, host);
Обратите внимание: вы должны добавить WATCHFILE (или использовать nodemon). Выше код предназначен только для простого сервера соединений.
ШАГ 3: node server.js
или nodemon server.js
Теперь есть более простой способ, если вам просто нужен хост простой HTTP-сервер.
npm install -g http-server
и откройте наш каталог и введите http-server
https://www.npmjs.org/package/http-server
Ответ 7
Быстрый способ:
var express = require('express');
var app = express();
app.use('/', express.static(__dirname + '/../public')); // ← adjust
app.listen(3000, function() { console.log('listening'); });
Ваш путь:
var http = require('http');
var fs = require('fs');
http.createServer(function (req, res) {
console.dir(req.url);
// will get you '/' or 'index.html' or 'css/styles.css' ...
// • you need to isolate extension
// • have a small mimetype lookup array/object
// • only there and then reading the file
// • delivering it after setting the right content type
res.writeHead(200, {'Content-Type': 'text/html'});
res.end('ok');
}).listen(3001);
Ответ 8
Вместо того, чтобы иметь дело с оператором switch, я думаю, что более аккуратно искать тип контента из словаря:
var contentTypesByExtension = {
'html': "text/html",
'js': "text/javascript"
};
...
var contentType = contentTypesByExtension[fileExtension] || 'text/plain';
Ответ 9
Это в основном обновленная версия принятого ответа для подключения версии 3:
var connect = require('connect');
var serveStatic = require('serve-static');
var app = connect();
app.use(serveStatic(__dirname, {'index': ['index.html']}));
app.listen(3000);
Я также добавил параметр по умолчанию, так что index.html будет использоваться по умолчанию.
Ответ 10
Вам не нужно использовать какие-либо модули NPM для запуска простого сервера, там очень маленькая библиотека под названием " NPM Free Server" для Node:
50 строк кода, выходы, если вы запрашиваете файл или папку, и придает ему красный или зеленый цвет, если он не сработал. Менее 1 КБ в размере (уменьшено).
Ответ 11
если на вашем ПК установлен node, возможно, у вас есть NPM, если вам не нужен материал NodeJS, вы можете использовать serve для этого:
1 - установите пакет на ПК:
npm install -g serve
2 - Подайте свою статическую папку:
serve <path>
d:> serve d:\StaticSite
Он покажет вам, какой порт используется для вашей статической папки, просто перейдите к хосту, например:
http://localhost:3000
Ответ 12
Я нашел интересную библиотеку на npm, которая может вам пригодиться. Он называется mime (npm install mime
или https://github.com/broofa/node-mime), и он может определить тип mime файла. Вот пример веб-сервера, который я написал с его помощью:
var mime = require("mime"),http = require("http"),fs = require("fs");
http.createServer(function (req, resp) {
path = unescape(__dirname + req.url)
var code = 200
if(fs.existsSync(path)) {
if(fs.lstatSync(path).isDirectory()) {
if(fs.existsSync(path+"index.html")) {
path += "index.html"
} else {
code = 403
resp.writeHead(code, {"Content-Type": "text/plain"});
resp.end(code+" "+http.STATUS_CODES[code]+" "+req.url);
}
}
resp.writeHead(code, {"Content-Type": mime.lookup(path)})
fs.readFile(path, function (e, r) {
resp.end(r);
})
} else {
code = 404
resp.writeHead(code, {"Content-Type":"text/plain"});
resp.end(code+" "+http.STATUS_CODES[code]+" "+req.url);
}
console.log("GET "+code+" "+http.STATUS_CODES[code]+" "+req.url)
}).listen(9000,"localhost");
console.log("Listening at http://localhost:9000")
Это будет работать с любым обычным текстовым или графическим файлом (.html,.css,.js,.pdf,.jpg,.png,.m4a и .mp3 - это те расширения, которые я тестировал, но теория должна работать для всего)
Замечания разработчика
Вот пример вывода, который я получил с ним:
Listening at http://localhost:9000
GET 200 OK /cloud
GET 404 Not Found /cloud/favicon.ico
GET 200 OK /cloud/icon.png
GET 200 OK /
GET 200 OK /501.png
GET 200 OK /cloud/manifest.json
GET 200 OK /config.log
GET 200 OK /export1.png
GET 200 OK /Chrome3DGlasses.pdf
GET 200 OK /cloud
GET 200 OK /-1
GET 200 OK /Delta-Vs_for_inner_Solar_System.svg
Обратите внимание на функцию unescape
в построении пути. Это позволяет указывать имена файлов с пробелами и закодированными символами.
Ответ 13
Изменить:
Node.js sample app Node Чат имеет необходимую функциональность.
В нем README.textfile
3. Шаг - это то, что вы ищете.
шаг1
- создать сервер, который отвечает на мир приветствия на порту 8002
step2
- создать index.html и выполнить его
step3
- ввести util.js
- изменить логику, чтобы обслуживался любой статический файл
- показать 404 в случае, если файл не найден.
step4
- добавить jquery-1.4.2.js
- добавить client.js
- изменить index.html, чтобы пригласить пользователя для прозвища
Вот server.js
Вот util.js
Ответ 14
То, как я это делаю, это прежде всего установить статический сервер node глобально через
npm install node-static -g
затем перейдите в каталог, содержащий ваши html файлы, и запустите статический сервер с помощью static
.
Перейдите в браузер и введите localhost:8080/"yourHtmlFile"
.
Ответ 15
В основном копирование принятого ответа, но не создание js файла.
$ node
> var connect = require('connect'); connect().use(static('.')).listen(8000);
Обнаружено, что это очень удобно.
Update
Как и в последней версии Express, service-static становится отдельным промежуточным программным обеспечением. Используйте это для обслуживания:
require('http').createServer(require('serve-static')('.')).listen(3000)
Сначала установите serve-static
.
Ответ 16
var http = require('http');
var fs = require('fs');
var index = fs.readFileSync('index.html');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/html'});
// change the to 'text/plain' to 'text/html' it will work as your index page
res.end(index);
}).listen(9615);
Я думаю, вы ищете это. В вашем index.html просто заполните его нормальным html-кодом - все, что вы хотите отобразить на нем, например:
<html>
<h1>Hello world</h1>
</html>
Ответ 17
Я использую ниже код для запуска простого веб-сервера, который отображает файл html по умолчанию, если файл не указан в Url.
var http = require('http'),
fs = require('fs'),
url = require('url'),
rootFolder = '/views/',
defaultFileName = '/views/5 Tips on improving Programming Logic Geek Files.htm';
http.createServer(function(req, res){
var fileName = url.parse(req.url).pathname;
// If no file name in Url, use default file name
fileName = (fileName == "/") ? defaultFileName : rootFolder + fileName;
fs.readFile(__dirname + decodeURIComponent(fileName), 'binary',function(err, content){
if (content != null && content != '' ){
res.writeHead(200,{'Content-Length':content.length});
res.write(content);
}
res.end();
});
}).listen(8800);
Он отобразит все js, css и файл изображения вместе со всем содержимым html.
Согласиться с утверждением " Нет типа содержимого лучше, чем неправильный"
Ответ 18
Я не уверен, что это именно то, что вы хотели, однако вы можете попробовать изменить:
{'Content-Type': 'text/plain'}
:
{'Content-Type': 'text/html'}
В этом случае клиент браузера отобразит файл как html вместо обычного текста.
Ответ 19
Немного более verbose express версии 4.x, но которая предоставляет список каталогов, сжатие, кеширование и запросы на журнал в минимальном количестве строк
var express = require('express');
var compress = require('compression');
var directory = require('serve-index');
var morgan = require('morgan'); //logging for express
var app = express();
var oneDay = 86400000;
app.use(compress());
app.use(morgan());
app.use(express.static('filesdir', { maxAge: oneDay }));
app.use(directory('filesdir', {'icons': true}))
app.listen(process.env.PORT || 8000);
console.log("Ready To serve files !")
Ответ 20
Сумасшедшее количество сложных ответов здесь. Если вы не собираетесь обрабатывать nodeJS файлы/базу данных, а просто хотите обслуживать статические html/css/js/images по вашему запросу, просто установите pushstate-server или аналогичный;
Вот "один лайнер", который создаст и запустит мини-сайт. Просто вставьте этот весь блок в свой терминал в соответствующий каталог.
mkdir mysite; \
cd mysite; \
npm install pushstate-server --save; \
mkdir app; \
touch app/index.html; \
echo '<h1>Hello World</h1>' > app/index.html; \
touch server.js; \
echo "var server = require('pushstate-server');server.start({ port: 3000, directory: './app' });" > server.js; \
node server.js
Откройте браузер и перейдите в http://localhost:3000. Готово.
Сервер будет использовать директорию app
в качестве корня для работы с файлами. Чтобы добавить дополнительные активы, просто поместите их в этот каталог.
Ответ 21
var http = require('http');
var fs = require('fs');
var index = fs.readFileSync('index.html');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'html'});
res.end(index);
}).listen(9615);
//Just Change The CONTENT TYPE to 'html'
Ответ 22
В большинстве приведенных выше ответов очень хорошо описывается, как содержимое подается. То, что я рассматривал как дополнительный, было перечислением каталога, чтобы можно было просмотреть другое содержимое каталога. Вот мое решение для дальнейших читателей:
'use strict';
var finalhandler = require('finalhandler');
var http = require('http');
var serveIndex = require('serve-index');
var serveStatic = require('serve-static');
var appRootDir = require('app-root-dir').get();
var log = require(appRootDir + '/log/bunyan.js');
var PORT = process.env.port || 8097;
// Serve directory indexes for reports folder (with icons)
var index = serveIndex('reports/', {'icons': true});
// Serve up files under the folder
var serve = serveStatic('reports/');
// Create server
var server = http.createServer(function onRequest(req, res){
var done = finalhandler(req, res);
serve(req, res, function onNext(err) {
if (err)
return done(err);
index(req, res, done);
})
});
server.listen(PORT, log.info('Server listening on: ', PORT));
Ответ 23
Уже существует несколько отличных решений для простого nodejs server
.
Существует еще одно решение, если вам нужно live-reloading
, когда вы вносили изменения в свои файлы.
npm install lite-server -g
перейдите в каталог и сделайте
lite-server
он откроет браузер для вас с живой перезагрузкой.
Ответ 24
от w3schools
довольно просто создать сервер узлов, который будет обслуживать любой запрашиваемый файл, и вам не нужно устанавливать какие-либо пакеты для него
var http = require('http');
var url = require('url');
var fs = require('fs');
http.createServer(function (req, res) {
var q = url.parse(req.url, true);
var filename = "." + q.pathname;
fs.readFile(filename, function(err, data) {
if (err) {
res.writeHead(404, {'Content-Type': 'text/html'});
return res.end("404 Not Found");
}
res.writeHead(200, {'Content-Type': 'text/html'});
res.write(data);
return res.end();
});
}).listen(8080);
HTTP://локальный: 8080/file.html
будет служить file.html с диска
Ответ 25
Вы можете просто ввести их в свою оболочку
npx serve
Репо: https://github.com/zeit/serve.
Ответ 26
Это одно из самых быстрых решений, которое я использую для быстрого просмотра веб-страниц.
sudo npm install ripple-emulator -g
С этого момента просто введите каталог ваших html файлов и запустите
ripple emulate
затем измените устройство на ландшафт Nexus 7.
Ответ 27
Более простая версия, с которой я столкнулся, выглядит следующим образом. Для образовательных целей это лучше всего, потому что в нем нет абстрактных библиотек.
var http = require('http'),
url = require('url'),
path = require('path'),
fs = require('fs');
var mimeTypes = {
"html": "text/html",
"mp3":"audio/mpeg",
"mp4":"video/mp4",
"jpeg": "image/jpeg",
"jpg": "image/jpeg",
"png": "image/png",
"js": "text/javascript",
"css": "text/css"};
http.createServer(function(req, res) {
var uri = url.parse(req.url).pathname;
var filename = path.join(process.cwd(), uri);
fs.exists(filename, function(exists) {
if(!exists) {
console.log("not exists: " + filename);
res.writeHead(200, {'Content-Type': 'text/plain'});
res.write('404 Not Found\n');
res.end();
return;
}
var mimeType = mimeTypes[path.extname(filename).split(".")[1]];
res.writeHead(200, {'Content-Type':mimeType});
var fileStream = fs.createReadStream(filename);
fileStream.pipe(res);
}); //end path.exists
}).listen(1337);
Теперь перейдите в браузер и откройте следующее:
http://127.0.0.1/image.jpg
Здесь image.jpg
должен находиться в том же каталоге, что и этот файл.
Надеюсь, это поможет кому-то:)
Ответ 28
Я также могу порекомендовать SugoiJS, он очень прост в настройке и дает возможность начать писать быстро и имеет отличные функции.
Посмотрите здесь, чтобы начать: http://demo.sugoijs.com/, документация: https://wiki.sugoijs.com/
Он имеет декораторы обработки запросов, политики запросов и декораторы политик авторизации.
Например:
import {Controller,Response,HttpGet,RequestParam} from "@sugoi/server";
@Controller('/dashboard')
export class CoreController{
constructor(){}
@HttpGet("/:role")
test(@RequestParam('role') role:string,
@RequestHeader("role") headerRole:string){
if(role === headerRole )
return "authorized";
else{
throw new Error("unauthorized")
}
}
}
Ответ 29
Это очень легко с тоннами библиотек, представленных сегодня. Ответы здесь являются функциональными. Если вы хотите другую версию для запуска быстрее и проще
Конечно, сначала установите node.js. Потом:
> # module with zero dependencies
> npm install -g @kawix/[email protected]
> # change /path/to/static with your folder or empty for current
> kwcore "https://raw.githubusercontent.com/voxsoftware/kawix-core/master/example/npmrequire/express-static.js" /path/to/static
Здесь содержимое " https://raw.githubusercontent.com/voxsoftware/kawix-core/master/example/npmrequire/express-static.js " (вам не нужно скачивать его, я написал для понимания, как работает позади)
// you can use like this:
// kwcore "https://raw.githubusercontent.com/voxsoftware/kawix-core/master/example/npmrequire/express.js" /path/to/static
// kwcore "https://raw.githubusercontent.com/voxsoftware/kawix-core/master/example/npmrequire/express.js"
// this will download the npm module and make a local cache
import express from 'npm://[email protected]^4.16.4'
import Path from 'path'
var folder= process.argv[2] || "."
folder= Path.resolve(process.cwd(), folder)
console.log("Using folder as public: " + folder)
var app = express()
app.use(express.static(folder))
app.listen(8181)
console.log("Listening on 8181")
Ответ 30
используйте nginx,
или используйте экспресс-узел.