Cloud9: изображение сервера nodejs не отображается (HTML)

У меня следующая настройка в IDE cloud9.

Корневая папка проекта

  1. Hello.html - содержит простые теги HTML (+ тег изображения) Предварительный просмотр отображает изображение
  2. HelloHtml.js - js-файл узла, который читает html-файл и пишет клиенту (ответ). .
  3. Penguins.jpg - файл изображения в той же папке.

Когда я запускаю службу и нажимаю URL-адрес в браузере, HTML-код отображается с надписью «Hello World!». отображается как. Но изображение не отображается. Каким должен быть атрибут src = "" в теге img.

Какой должен быть путь к файлу изображения? Спасибо.

HelloHtml.js

var http = require('http');
var fs = require('fs');

http.createServer(function(request, response) {
    response.writeHead(200, {
        'Content-Type': 'text/html'
    });
    fs.readFile('./Hello.html', function(err, data){
            if(err) throw err;
            response.end(data);
        });
}).listen(process.env.PORT); 
console.log('Hello World HTML Service has started.');

Hello.html

<html>
    <head>
        <title>Node JS</title>
    </head>
    <body>
        <h2>Hello world!</h2>
        <img src="Penguins.jpg" />
    </body>
</html>

person Sandeep G B    schedule 14.12.2011    source источник


Ответы (1)


Вы не обрабатываете статические файлы, обслуживающие нигде в вашем коде, вы просто обслуживаете файл hello.html, несмотря ни на что:

http.createServer(function(request, response) {
    response.writeHead(200, {
        'Content-Type': 'text/html'
    });
    fs.readFile('./Hello.html', function(err, data){
            if(err) throw err;
            response.end(data);
        });
}).listen(process.env.PORT); 

Либо создайте схему маршрутизации на основе URL-адреса запроса, либо используйте какой-нибудь статический файловый сервер отсюда:

https://github.com/joyent/node/wiki/modules#wiki-web-frameworks-static

Я предлагаю вам взглянуть на Express, в нем есть и обработка маршрутов: expressjs.com

person alessioalex    schedule 14.12.2011