Внутренние скрипты и таблицы стилей всегда указывают на индексный файл (Node.JS) - PullRequest
1 голос
/ 04 декабря 2011

Это действительно странная проблема.Я только что установил Node.JS в своей системе (Fedora).

У меня есть три файла в / var / www / mirror / :

  • server.js
  • client.js
  • index.html

Файл server.js - это тот, который я вызываю через CLI: node server.js.

Это, в основном, возвращает index.html .

var
    http = require('http'),
    io   = require('socket.io'),
    fs   = require('fs');

http.createServer(function(request, response) {

    fs.readFile(__dirname + '/index.html', function(error, data) {

        if (error) {

            result.writeHead(500);

            console.log('Error: Could not read index.html.');

        }

        response.writeHead(200, {'Content-Type': 'text/html'});
        response.end(data);

    });

}).listen(1337, '127.0.0.1');

console.log('Server is running.');

Все работает, как ожидается, и нигде не выдается никаких ошибок.

В index.html У меня есть простая структура HTML5 (на самом деле ничего лишнего!) и <script />, которая указывает, как уже упоминалось, client.js .

Эта строка кода выглядитвот так (Ctrl + U; из браузера):

<script src="client.js"></script>

Переместив курсор на client.js, я получил фактическое местоположение: http://127.0.0.1:1337/client.js.

Кажетсяправильно, верно?

Проблема:

При открытии этой ссылки открывается требуемый файл, но содержимое выглядит так, как server.js должно возвращаться.

Это не позволяет мне включатьлюбые внутренние скрипты и таблицы стилей!

Я думаю, чтовсе, что проходит через http://127.0.0.1:1337/ (также http://127.0.0.1:1337/client.js, http://127.0.0.1:1337/a/b/c и т. д.), обрабатывается через server.js - и server.js возвращает index.html (см. Выше).

Как это исправить?Спасибо за любой совет!

1 Ответ

1 голос
/ 04 декабря 2011

Посмотрите на req.url, чтобы узнать адрес URL, который запрашивает пользователь.Оттуда вам нужно, чтобы какой-то код решал, обслуживать ли index.html или client.js.

Кроме того, поскольку я предполагаю, что index.html меняется не очень часто, вам, вероятно, следует просто прочитать егои сохранить буфер в переменной, а не читать его при каждом запросе.

Существуют некоторые модули, которые немного упрощают обслуживание статических файлов.Проверьте filed для довольно хорошего автономного статического файла

...