2012-07-03 2 views
1

Я новичок в Node.js, и я хочу знать несколько основных вещей:Новичок Node JS запросов

  1. Где поместить файлы проекта? Как и для PHP, мы помещаем их в www/ OR htdocs/.

  2. Я положил их в папку в своих документах и ​​попробовал node /path/to/folder/example.js. Это верно?

  3. Я пробовал самую первую программу из официального документа узла, он просто распечатывает ... на консоли вместо печати Server is running at 127.0.0.1:8080. Могла ли структура папок быть причиной этого?

  4. Также возможно создать целый сайт с использованием node.js ИЛИ могут быть созданы только определенные модули? Какие модули?

Пожалуйста, помогите мне!

Спасибо!

Edit:

Это код, который я попробовал, его самый первый 'Простой веб-сервер' пример из документации узла:

var http = require('http'); 

http.createServer(function (request, response) { 
    response.writeHead(200, {'Content-Type': 'text/plain'}); 
    response.end('Hello World\n'); 
}).listen(8124); 

console.log('Server running at http://127.0.0.1:8124/'); 

Edit:

Этот код просто распечатывает следующую информацию:

>node example.js 
... 

Даже не вернитесь к подсказке узла!

+0

Можете ли вы показать нам скриншот или что-то еще? Нет причин, по которым он должен печатать '...'. – Ashe

+0

Не могу показать это прямо сейчас, потому что на какой-то другой машине! Проверьте мое редактирование, хотя ... –

ответ

0

Ваша проблема заключается в том, что вы пытаетесь запустить свой сервер из REPL внутреннего узла. Вам нужно запустить его из командной строки Windows напрямую. «...», который вы получаете, означает, что REPL узла не видел конца действительного выражения JavaScript и поэтому ждет вас, чтобы ввести больше.

В ответ на ваш последний комментарий к предыдущему ответу, причина, по которой REPL печатает «undefined» после вызова console.log(), заключается в том, что она оценивает его как выражение (которое имеет побочный эффект, а именно распечатку сообщения) а затем пытается распечатать возвращаемое значение; поскольку console.log() фактически ничего не возвращает (он используется только для его побочных эффектов), поэтому вы получаете «неопределенный».

+0

Да точно! Я запускал программу из REPL, а не из командной строки Windows. Благодаря! –

3
  1. Это действительно не имеет значения, где вы размещаете файлы до тех пор, как пользователь, запускающий команду node имеет доступ к этому местоположению.

    На самом деле, я бы порекомендовал вам разместить node.js исходных файлов вне любой www или htdocs папку (или любой публично папка для доклада доступен в этом отношении), потому что иначе .js исходный файл может быть доступен для чтения, когда служил с использованием ваш веб-сервер (включая любые учетные данные безопасности, которые могут быть в исходных файлах, оставив вас в открытом доступе).

  2. Да, это правильный способ запуска сценария узла. Однако я бы рекомендовал сначала cd в правильную директорию и запустить node example.js оттуда, чтобы предотвратить ошибки разрешения пути, особенно когда вы начнете использовать различные модули npm позже.

  3. Наверное, нет. Трудно сказать, не видя кода, который вы пытаетесь запустить первым, но если будут возникать ошибки разрешения пути из-за структур папок и т. Д., node просто выйдет с неприятной ошибкой, а не с печати «...».

  4. Да, можно построить целый сайт, используя node. Фактически, существуют различные модули npm, которые могут помочь вам сделать это проще.Я рекомендую вам взглянуть на:

    Эти структуры обеспечивают много наворотов, которые простираются node, чтобы сделать его более реальным, как полноценный веб-сервер (печенье, ВХосты , сеансы, пути маршрутизации и т.д.)

РЕДАКТИРОВАТЬ

Чтобы уточнить ответ nr.3: Я пробовал код, который вы вставили, как из правильной папки, так как я рекомендовал в ответ nr.2 и используя абсолютный путь; Они оба работают отлично:

[email protected] ~ $ node tests.js 
Server running at http://127.0.0.1:8124/ 
^C 

[email protected] ~ $ cd/
[email protected]/$ node /Users/remco/tests.js 
Server running at http://127.0.0.1:8124/ 

Таким образом, сервер узла запускается и публикуете на http://127.0.0.1:8124/, который работает так же:

[email protected] ~ $ wget http://127.0.0.1:8124/ && cat index.html 
--2012-07-03 13:25:32-- http://127.0.0.1:8124/ 
Connecting to 127.0.0.1:8124... connected. 
HTTP request sent, awaiting response... 200 OK 
Length: unspecified [text/plain] 
Saving to: `index.html' 

    [ <=>  ] 12   --.-K/s in 0s  

2012-07-03 13:25:32 (901 KB/s) - `index.html' saved [12] 

Hello World 
[email protected] ~ $ 

Таким образом, мы можем заключить, что нет ничего плохого с кодом вы пробовать. Возможно, что-то не так с вашей установкой node. Это на Linux, OSX или Windows?

+1

Спасибо за подробный ответ! Я добавил код, который я попробовал на свой вопрос ... Пожалуйста, проверьте и дайте мне знать, если что-то не так с этим ... –

+1

@AvantGarde Обновленный ответ с результатами теста для вашего кода: похоже, что что-то не так с вашим node.js если этот скрипт не работает. –

+1

Его Windows 7. Я попробовал простой 'console.log ('Hello World')', он работает, но также показывает «undefined» после сообщения. –

Смежные вопросы