Подтвердить что ты не робот

Отобразить страницу html с помощью node.js

Это мой первый раз с node.js. Я получаю его для отображения index.html, но он не отображает изображения на сайте или что-то еще, он ТОЛЬКО показывает основной материал html. Вот как я это настроил. Там нет apache, php или что-либо еще на сервере, просто ubuntu, proftp и node (и завиток и другие зависимости). Я создал основной каталог для файлов node/var/nodeFiles, а каталог для файлов html/site -/var/nodeFiles/www поэтому для моего сервера node я сделал это следующим образом:

var http = require('http'),
    fs = require('fs');
fs.readFile('/var/nodeFiles/www/index.html', function (err, html) {
    if (err) {
        throw err; 
    }       
    http.createServer(function(request, response) {  
        response.writeHeader(200, {"Content-Type": "text/html"});  
        response.write(html);  
        response.end();  
    }).listen(80);
});

это работает, но он ТОЛЬКО показывает файл index.html и НИЧЕГО, прикрепленный к нему, поэтому нет изображений, эффектов или всего, что должен отображать html файл. Файлы и каталоги все правильно, я дважды проверял, и права на папки правильные. Итак, что еще мне нужно сделать, чтобы получить node для отображения остальной части сайта? Надеюсь, я правильно объяснил себя, мне сказали, что это место, где можно задать вопросы развития. Спасибо, что нашли время, чтобы прочитать это.

4b9b3361

Ответ 1

но он ТОЛЬКО показывает файл index.html и НИЧЕГО, прикрепленный к нему, поэтому нет изображений, никаких эффектов или чего-либо, что должен отображаться html файл.

Это потому, что в вашей программе единственное, что вы возвращаете в браузер, независимо от того, как выглядит запрос.

Вы можете взглянуть на более полный пример, который вернет правильные файлы для наиболее распространенных веб-страниц (HTML, JPG, CSS, JS) здесь https://gist.github.com/hectorcorrea/2573391

Кроме того, взгляните на это сообщение в блоге, которое я написал о том, как начать работу с node. Я думаю, это может прояснить вам несколько вещей: http://hectorcorrea.com/blog/introduction-to-node-js

Ответ 2

Проверьте этот базовый код на настройку html-сервера. его работа для меня.

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


fs.readFile('./index.html', function (err, html) {
    if (err) {
        throw err; 
    }       
    http.createServer(function(request, response) {  
        response.writeHeader(200, {"Content-Type": "text/html"});  
        response.write(html);  
        response.end();  
    }).listen(8000);
});

Ответ 3

Это сделало трюк для меня:

var express = require('express'),
app = express(); 
app.use('/', express.static(__dirname + '/'));
app.listen(8080);

Ответ 4

Если ваша цель - просто отобразить некоторые статические файлы, вы можете использовать пакет Connect. У меня был некоторый успех (я до сих пор довольно новичок в NodeJS), используя его и twitter bootstrap API в комбинации.

в командной строке

:\> cd <path you wish your server to reside>
:\> npm install connect

Затем в файле (я назвал его) Server.js

var connect = require('connect'),
   http = require('http');
connect()
   .use(connect.static('<pathyouwishtoserve>'))
   .use(connect.directory('<pathyouwishtoserve>'))
   .listen(8080);

Наконец

:\>node Server.js

Предостережения:

Если вы не хотите отображать содержимое каталога, исключите строку .use(connect.directory.

Итак, я создал папку с именем "server", размещенную index.html в папке и bootstrap API в той же папке. Затем при доступе к компьютерам IP: 8080 он автоматически использует файл index.html.

Если вы хотите использовать порт 80 (так что просто переходим к http://, и вам не нужно вводить: 8080 или какой-либо другой порт). вам нужно запустить node с помощью sudo, я не уверен в значениях безопасности, но если вы просто используете его для внутренней сети, я лично не считаю это большим делом. Появление внешнего мира - это еще одна история.

Обновление 1/28/2014:

Мне не приходилось делать следующее в моих последних версиях вещей, поэтому сначала попробуйте, как описано выше, если это не сработает (и вы читаете ошибки, жалуясь, что не можете найти nodejs), идите вперед и, возможно, попробуйте ниже.

Окончательное обновление

Кроме того, при запуске в ubuntu я столкнулся с проблемой, используя nodejs как имя (с NPM), если у вас возникла эта проблема, я рекомендую использовать псевдоним или что-то "переименовать" nodejs в node.

Команды, которые я использовал (лучше или хуже):

Создайте новый файл с именем node

:\>gedit /usr/local/bin/node
#!/bin/bash
exec /nodejs "[email protected]"

sudo chmod -x /usr/local/bin/node

Это должно сделать

node Server.js 

отлично работает