Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Node.js ReadStream从不调用';数据';听众_Javascript_Node.js - Fatal编程技术网

Javascript Node.js ReadStream从不调用';数据';听众

Javascript Node.js ReadStream从不调用';数据';听众,javascript,node.js,Javascript,Node.js,我有一个名为a.txt的文件,我可以使用fs.readFile打开并读取它。但是,我似乎无法使用createReadStream阅读: var fs = require('fs'); var stream = fs.createReadStream('a.txt'); stream.on('data', function() { console.log('data present'); }); 这不会打印任何内容,我缺少什么?试试: var data = ''; var rs = fs.c

我有一个名为a.txt的文件,我可以使用fs.readFile打开并读取它。但是,我似乎无法使用createReadStream阅读:

var fs = require('fs');

var stream = fs.createReadStream('a.txt');
stream.on('data', function() { console.log('data present'); });
这不会打印任何内容,我缺少什么?

试试:

var data = '';

var rs = fs.createReadStream('/path/to/file');

rs.on('data', function(data) {
  data += data;
});

rs.on('end', function() {
  console.log(data);
});

为了确保正确,请尝试获取文件的路径

var path = __dirname + '/a.txt';
console.log(path);
var stream = fs.createReadStream(path);

如果这种情况发生在我身上。在REPL中运行此代码时,控制流将返回到您键入的每行之间的节点事件循环。当这种情况发生时,node会抓住机会执行任何挂起的IO。但是,因为你没有连接一个监听器,“数据”事件愉快地驶向遗忘

您可以通过将上面的代码粘贴到javascript文件并将其作为脚本运行来验证这一点。它可以正常工作,因为侦听器在控件返回到事件循环之前被连接

我们遇到的这个问题的版本是在打开一个流并尝试在回调中使用它时。在封闭函数中打开流并从回调中引用流是不起作用的——在附加事件侦听器之前,节点已经将所有数据抽出来了


您可以通过以下两种方法之一解决此问题:打开流时立即呼叫暂停,或者在进行任何回调之前确保附加侦听器。

您的
a.txt
中是否有任何内容?是的,这只是一个示例,我实际上正在加载mp3文件。但是如果示例使用此代码,那么问题就出在别的地方了。这些是我在一个节点控制台中执行的逐字逐句,我在想。。。我确实在写第二行和第三行之间有一些时间,如果我没有足够快地连接侦听器,那么发出的“数据”事件会丢失吗?