我是node.js的新手,我想知道一些基本的东西:
放置项目文件的位置?与PHP一样,我们将它们放在www/
OR htdocs/
。
我将它们放在我的文档中的文件夹中并尝试node /path/to/folder/example.js
。这是对的吗?
我尝试了第一个来自node的官方文档的程序,只是将...
打印到控制台而不是打印Server is running at 127.0.0.1:8080
。文件夹结构可能是这个原因吗?
还可以使用node.js制作整个网站,还是只能制作特定的模块?什么样的模块?
请指导我!
谢谢!
修改
这是我尝试的代码,它是Node的文档中的第一个“简单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/');
修改
此代码只打印出以下内容:
>node example.js
...
甚至没有回到节点提示符!
答案 0 :(得分:3)
只要运行node
命令的用户可以访问该位置,放置文件的位置并不重要。
事实上,我建议您将node.js源文件放在之外的任何www
或htdocs
文件夹(或任何公开可用的文件夹),因为否则.js
源文件在使用您的网络服务器提供时可以是世界可读的(包括可能在源文件中的任何安全凭证,让您暴露)。
是的,这是运行节点脚本的正确方法。但是,我建议先将cd
放入正确的目录并从那里运行node example.js
以防止路径解析错误,尤其是当您稍后开始使用各种npm
模块时。
可能不是。如果没有看到你试图首先运行的代码很难说,但如果由于文件夹结构等而导致任何路径解析错误,node
只会退出一个讨厌的错误而不是打印'...'
是的,可以使用node
构建整个网站。事实上,有各种npm
模块可以帮助您更轻松地实现这一目标。我建议你看看:
这些框架提供了许多延伸node
的花边和口哨,使其更加可行,作为完整的网络服务器(cookie,虚拟主机,会话,路径路由等)
修改强>
详细说明答案nr.3: 我已经尝试了你粘贴的代码,两者都来自正确的文件夹,正如我在回答nr.2中建议并使用绝对路径;他们都工作正常:
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上?
答案 1 :(得分:0)
您的问题是您尝试从节点的REPL内部运行服务器。您需要直接从Windows命令行运行它。你得到的“...”意味着节点的REPL没有看到有效的JavaScript表达式的结束,所以等着你输入更多。
在回复您对上一个答案的最后评论时,REPL在调用console.log()
后打印“未定义”的原因是它正在将其评估为表达式(这恰好有副作用,即打印出来消息)然后尝试打印其返回值;因为console.log()
实际上没有返回任何东西(它只用于它的副作用),这就是你得到“未定义”的原因。