这是针对初学者的节点教程。为什么我的代码不起作用?它与他的相同,我尝试了解决方法但没有成功。如果可以的话请帮忙。
http://nodetuts.com/tutorials/2-webtail-nodejs-child-processes-and-http-chunked-encoding.html#video
在本教程中,他将一个日志/文本文件写入位于 localhost:4000 的网页中,之前的示例可以正常工作(教程 1),但是我根本无法让它做任何事情,它可以运行,仅此而已。
任何人都可以得到这个打印文件到网页。:) 谢谢!
var http = require('http');
var spawn = require('child_process').spawn;
http.createServer(function(request, response){
response.writeHead(200, {
'Content-Type' : 'text/plain'
});
var tail_child = spawn('tail', ['-f', '/var/log/system.log']);
request.connection.on('end', function(){
tail_child.kill();
});
tail_child.stdout.on('data', function(data){
console.log(data.toString());
response.write(data);
});
}).listen(4000);
我尝试了以下方法,它们没有任何区别:
console.log(data.toString());
response.write(data);
response.end();
和
console.log(data.toString());
response.end(data);
MiguelSanchezGonzalez
回答后编辑:
我添加tail_child.stderr.pipe(process.stdout);
到正确的位置,这是我得到的回应:
CreateProcessW: The system cannot find the file specified.
这里确实存在一个文件,我还测试了许多不同的路径,包括与脚本位于同一文件夹中的文本文件('/test.txt'
例如。所以也许我错了,我只是假设当它说文件时它在谈论我的文件。
编辑2:我还检查了路径是否存在(从这里粗略构建):检查NodeJs中是否存在文件的最快方法,它确实说该文件确实存在。
这段代码:
var file = path.normalize = ('var/log/system.log');
fs.exists(file, function(exists){
util.debug(exists ? "yep, its there":"nope");
});
console.log(file);
输出这个:
var/log/system.log
DEBUG: yep, its there