node.exe不读取文件,但返回省略号(...)

时间:2014-03-10 12:38:16

标签: node.js

结束2014年2月我将节点下载到我的Windows 7机器的c:\ dev \ 0.10 \,并且node.exe打开正常。 受Smashing Node(一些书)的启发,我希望实现以下目标:

Firefox显示纯文本Smashing Node!如果我将它指向localhost:3000并在节点控制台中运行

node my-web-server.js 

node.exe旁边的my-web-server.js文件包含

require('http').createServer(function(req,res){res.writeHead(200, ('Content-Type', 'text/html'));res.end('<marquee>Smashing Node!</marquee>');}).listen(3000);;

但我失败了:浏览器说

cannot connect with webserver on localhost:3000.

如果在节点中粘贴上面的oneliner,它会与

作出反应
{ domain: null,
  _events: ..etc...  }

忽略这一点,浏览器F5导致Smashing Node!。

Node拒绝最简单的文件,比如在node.exe旁边有一个名为hello.js的文件,文件中包含ascii文本     的console.log( “你好”); 我输入:

node hello.js

节点返回

... 

(深灰色的省略号) 预期是:节点返回hello

我输入一个不存在的文件:

node die

节点返回

...

如果我输入

var http = require('http');

节点:

undefined 

(深灰色)预期是:好的,特别是因为上面的oneliner导致了一个Web服务器。

如果我输入

npm install colors 

节点与

做出反应
npm should be run outside of the node repl, in your normal shell. (Press Control-D to exit.)

当然

node --version 

也会以省略号回复。

我该怎么办? 如何使节点处理文件?

2 个答案:

答案 0 :(得分:2)

您需要在命令行shell上运行node hello.js(和npm)(例如cmd.com或Windows PowerShell)。

您正尝试在Node REPL(节点控制台)中运行它,您只需在其中键入JavaScript。

答案 1 :(得分:0)

很难说Smashing Node在哪里失败,特别是作为单线程。代码在我的机器上运行正常,但您可以按如下方式拆分代码并添加一些console.log()以查看执行方式:

console.log('about to start listening for requests');
require('http').createServer( function(req,res) { 
    console.log('a request was received', req.url);
    res.writeHead(200, ('Content-Type', 'text/html'));
    res.end('<marquee>Smashing Node!</marquee>');
}).listen(3000);;
console.log('listening for requests');

像以前一样将此代码保存为my-web-server.js,然后从命令行“node my-web-server.js”运行并将浏览器指向localhost:3000

另外,我有一个非常基本的Node.js教程可以帮助您掌握基础知识:http://hectorcorrea.com/#/blog/introduction-to-node-js/51