2016-07-27 67 views
-2
var http = require("http"); 
var fs = require("fs"); 

http.createServer(function(request, response) { 
    console.log("User request received"); 
    response.writeHead(200, {"Content-Type": "Text/plain"}); 
    fs.createReadStream(process.argv[3]).pipe(response); 
    response.end(); 
}).listen(process.argv[2]); 

console.log("Server is running..."); 

该程序将端口号和文件路径作为命令行参数。
当我在节点上运行它,即使我通过正确的命令行参数,在错误发生我想启动一个简单的http web服务器,但这不起作用

+7

请发布您正在收到的错误 – Anselm

+0

是否定义了过程变量? –

+1

进程是node @Grüse中的全局变量 –

回答

1

不会从浏览器

我不知道访问时服务的文件,这可能不是是最好的答案,但它看起来像对response.end()的调用是在文件被提供之前关闭流。继这个答案的逻辑:

createReadStream().pipe() Callback

您需要的时候流逢回调,所以我发现这个工作,但再一次,我不知道这是否是最好的解决方法:

var http = require("http"); 
var fs = require("fs"); 

http.createServer(function(request, response) { 
console.log("User request received"); 
response.writeHead(200, {"Content-Type": "Text/plain"}); 
var t = fs.createReadStream(process.argv[3]).pipe(response); 

t.on('close', function(){ 
    response.end(); 
}); 

}).listen(process.argv[2]); 
+0

感谢您的回答@Sweet_Pete –

+0

没问题,欢迎您! –

相关问题