Установите корень документа на ваш http -сервер node.js?
-
26-10-2019 - |
Вопрос
Я только что настраиваю базовый сервер Node.js с помощью socket.io на своей локальной машине. Есть ли способ установить корень документа, чтобы вы могли включить другие файлы. Т.е. Ниже у меня есть Div с фоновым изображением AA. Путь, который изображение относится к местоположению сервера, однако это не работает. Любые идеи? Спасибо!
var http = require('http'),
io = require('socket.io'), // for npm, otherwise use require('./path/to/socket.io')
server = http.createServer(function(req, res){
// your normal server code
res.writeHead(200, {'Content-Type': 'text/html'});
res.end('<div style="background-image:url(img/carbon_fibre.gif);"><h1>Hello world</h1></div>');
});
server.listen(8080);
// socket.io
var socket = io.listen(server);
Решение
Для стиля фонового изображения Browser создаст совершенно новый HTTP-запрос на ваш сервер с Path *img/carbon_fibre.gif *, и этот запрос, безусловно, достигнет вашей анонимной функции, но ваша функция ответа только напишите дивизион с ContentType: Text/HTML независимо от req.pathname, чтобы изображение не могло быть должным образом отображено.
Вы можете добавить код в свою функцию, как:
var http = require('http'),
io = require('socket.io'),
fs = require('fs'),
server = http.createServer(function(req, res){
// find static image file
if (/\.gif$/.test(req.pathname)) {
fs.read(req.pathname, function(err, data) {
res.writeHead(200, { 'Content-Type': 'image/gif' });
res.end(data);
});
}
else {
// write your div
}
});
server.listen(8080);
Я не очень хорошо знаком с Nodejs, поэтому приведенный выше код демонстрирует только логику, но не фактический блок запуска.
Другие советы
Использовать Выражать или же Соединять. Анкет Примеры: https://github.com/spadin/simple-express-static-server, http://senchalabs.github.com/connect/middleware-static.html