2012-07-03 64 views
1

我是新来的node.js,我想知道一些基本的东西:新手节点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或指定模块整个网站可以做?什么样的模块?

请指导我!

谢谢!

编辑:

这是我试过的代码,它的第一个 '简单的Web服务器' 从节点的文档例如:

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/'); 

编辑:

此代码刚打印出FOLL:

>node example.js 
... 

甚至不会回节点提示!

+0

你能告诉我们一个截图或什么?没有理由打印'...'。 – Ashe

+0

现在不能显示它,因为它在其他一些机器!检查我的编辑虽然... –

回答

0

你的问题是你试图从节点的REPL中运行你的服务器。您需要直接从Windows命令行运行它。你得到的“...”意味着节点的REPL没有看到有效的JavaScript表达式结束,所以等待你输入更多。

为了回应您对上一个答案的最新评论,REPL在调用console.log()后打印“undefined”的原因是它将其评估为一个表达式(它恰好有副作用,即打印出该消息)然后尝试打印其返回值;因为console.log()实际上并没有返回任何东西(它仅用于其副作用),这就是为什么你得到“未定义”。

+0

是的!我从REPL运行程序而不是Windows命令行。谢谢! –

3
  1. 这并不重要,你只要把这些文件作为运行node命令访问该位置的用户。

    事实上,我会建议您将Node.js的源文件任何wwwhtdocs文件夹(或任何为此事公开缴费文件夹),因为其他使用服务时.js源文件可能是世界可读的您的网络服务器(包括可能在源文件中的任何安全证书,使您暴露)。

  2. 是的,这是运行节点脚本的正确方法。不过,我会建议首先将cd放入正确的目录并从那里运行node example.js以防止路径分辨率错误,尤其是当您稍后开始使用各种npm模块时。

  3. 大概不会。很难说没有看到你想要先运行的代码,但是如果由于文件夹结构等原因会发生任何路径解析错误,node只会以一个令人讨厌的错误而不是打印'...'的方式退出。

  4. 是的,可以使用node建立一个完整的网站。事实上,有各种npm模块,可以帮助你做这更容易。我建议你看看:

    这些框架都提供了大量的钟声和扩展node口哨,使作为一个完全成熟的网络服务器(饼干,虚拟主机更可行,会话,路径路由等)

EDIT

详细解答nr.3: 我已经尝试了你粘贴的代码,都来自正确的文件夹,正如我在第二回答中所建议的并且使用绝对路径;他们都做工精细:

[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'。 –