Node.js 新手节点JS查询
我是node.js新手,我想知道一些基本的事情:Node.js 新手节点JS查询,node.js,Node.js,我是node.js新手,我想知道一些基本的事情: 将项目文件放在哪里?与PHP一样,我们将它们放在www/或htdocs/中 我将它们放在文档中的一个文件夹中,并尝试node/path/to/folder/example.js。这是正确的吗 我尝试了node官方文档中的第一个程序,它只是将..打印到控制台,而不是打印服务器运行在127.0.0.1:8080。文件夹结构可能是原因之一吗 也可以使用node.js创建整个网站,或者只创建特定的模块?什么样的模块 请引导我 谢谢 编辑: 这是我尝试过的
www/
或htdocs/
中node/path/to/folder/example.js
。这是正确的吗..
打印到控制台,而不是打印服务器运行在127.0.0.1:8080
。文件夹结构可能是原因之一吗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
...
甚至没有返回到节点提示
节点
命令的用户有权访问该位置,那么将文件放置在何处并不重要
事实上,我建议您将node.js源文件放在www
或htdocs
文件夹(或任何可公开使用的文件夹)之外,否则.js
源文件在使用您的Web服务器提供服务时可能是世界可读的(包括源文件中可能存在的任何安全凭据,使您暴露)cd
放入正确的目录中,然后从那里运行node example.js
,以防止路径解析错误,特别是当您以后开始使用各种npm
模块时节点将以严重错误退出,而不是打印“…”
node
构建整个网站。事实上,有各种npm
模块可以帮助您简化这一过程。我建议您看看:
节点
的功能,使其更适合作为一个成熟的Web服务器(cookie、vhost、会话、路径路由等)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 ~ $
remco@Prosperpine约$wgethttp://127.0.0.1:8124/ &&cat index.html
--2012-07-03 13:25:32-- http://127.0.0.1:8124/
正在连接到127.0.0.1:8124…已连接。
HTTP请求已发送,正在等待响应…200确定
长度:未指定[文本/纯文本]
保存到:`index.html'
[]12---K/s在0s中
2012-07-03 13:25:32(901kb/s)-'index.html'已保存[12]
你好,世界
remco@Prosperpine ~ $
因此,我们可以得出结论,您正在尝试的代码没有问题。您的
节点安装可能有问题。这是在Linux、OSX还是Windows上?您的问题是,您试图从节点的REPL内部运行服务器。您需要直接从Windows命令行运行它。“…”这意味着节点的REPL尚未看到有效JavaScript表达式的结尾,因此等待您输入更多内容
作为对您上次对上一个答案的评论的回应,REPL在调用console.log()
后打印“undefined”的原因是它将其作为表达式进行计算(这碰巧有副作用,即打印出消息),然后尝试打印其返回值;因为console.log()
实际上不会返回任何内容(它只用于其副作用),这就是为什么会出现“未定义”的原因.感谢您的详细回复!我已将尝试的代码添加到我的问题中…请检查并让我知道是否有问题…@AvantGarde更新了答案,并提供了代码的测试结果:如果此脚本不起作用,您的node.js安装似乎有问题。它是Windows 7。我尝试了一个简单的控制台。日志(‘你好,世界’)
,它可以工作,但也会在消息后显示“未定义”。再次感谢您提供的详细帮助。我找到了原因,我是从REPL而不是Windows命令行运行该文件的!您能给我们显示一个屏幕截图或什么吗?它没有理由打印…
。现在无法显示,因为它在其他机器上!Che请检查我的编辑…没错!我是从REPL而不是Windows命令行运行程序的。谢谢!