Установите корень документа на ваш http -сервер node.js?

StackOverflow https://stackoverflow.com/questions/5822615

Вопрос

Я только что настраиваю базовый сервер 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, поэтому приведенный выше код демонстрирует только логику, но не фактический блок запуска.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top