新手节点JS查询
我是node.js的新手,我想知道一些基本的东西:
-
在哪里把项目文件? 就像PHP一样,我们把它们放在
www/
ORhtdocs/
。 -
我把它们放在我的文档中的一个文件夹中,并尝试
node /path/to/folder/example.js
。 它是否正确? -
我试过从节点的官方文档的第一个程序,它只是打印出
...
到控制台,而不是打印Server is running at 127.0.0.1:8080
。 文件夹结构可以成为一个原因吗? -
也有可能使整个网站使用node.js或只有特定的模块可以做? 什么样的模块?
请指导我!
谢谢!
编辑:
这是我尝试的代码,它是Node的文档中的第一个“Simple Web Server”示例:
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/');
编辑:
这段代码只是打印出下面的代码:
>node example.js ...
甚至不回到节点提示!
你的问题是你试图从节点的REPL中运行你的服务器。 您需要直接从Windows命令行运行它。 你得到的“…”意味着节点的REPL没有看到有效的JavaScriptexpression式结束,所以等待你input更多。
为了回应你对上一个答案的最后一个评论,REPL在调用console.log()
之后打印“undefined”的原因是它将它评估为一个expression式(这恰好有副作用,即打印出消息)然后试图打印它的返回值; 因为console.log()
实际上不会返回任何东西(它只用于副作用),这就是为什么你得到“未定义”。
-
只要运行
node
命令的用户可以访问该位置,放置文件的位置并不重要。实际上,我build议您将node.js源文件放在任何
www
或htdocs
文件夹(或任何公开可用的文件夹)之外,因为否则.js
源文件在使用Web服务器(包括任何安全证书可能在源文件中,让你暴露)。 -
是的,这是运行节点脚本的正确方法。 不过,我build议首先
cd
到正确的目录,并从那里运行node example.js
,以防止pathparsing错误,尤其是当您稍后开始使用各种npm
模块时。 -
可能不会。 很难说没有看到你想要运行的代码,但是如果由于文件夹结构等原因发生任何pathparsing错误,
node
就会退出,出现一个令人讨厌的错误,而不是打印“…”。 -
是的,可以使用
node
来构build整个网站。 事实上,有各种npm
模块,可以帮助你更容易。 我build议你看看:- Express框架
- Sencha连接
这些框架提供了大量的花里胡哨的扩展
node
,使它成为一个完整的web服务器(cookies,虚拟主机,会话,path路由等)更可行。
编辑
为了详细解答第三个问题:我已经尝试了你所粘贴的代码,这两个代码都来自正确的文件夹,正如我在第二个答案中推荐的那样,并且使用绝对path。 他们都工作得很好:
remco@Prosperpine ~ $ node tests.js Server running at http://127.0.0.1:8124/ ^C remco@Prosperpine ~ $ cd / remco@Prosperpine / $ node /Users/remco/tests.js Server running at http://127.0.0.1:8124/
因此,节点服务器启动并在http://127.0.0.1:8124/
上提供内容,这也适用于:
remco@Prosperpine ~ $ 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 remco@Prosperpine ~ $
所以我们可以得出结论:你正在尝试的代码没有问题。 你的node
安装可能有问题。 这是在Linux,OSX或Windows?