readline不会在rj.close()在nodejs中发出后停止行读取

我有以下文件,我想逐行阅读,并停止阅读一次,我发现“名称服务器8.8.8.8”。

nameserver 8.8.8.8 nameserver 45.65.85.3 nameserver 40.98.3.3 

我正在使用nodejs和readline模块来执行此操作

 const readline = require('readline'); const fs = require('fs'); function check_resolv_nameserver(){ // flag indicates whether namerserver_line was found or not var nameserver_flag = false; const rl = readline.createInterface({ input: fs.createReadStream('file_to_read.conf') }); rl.on('line', (line) => { console.log(`Line from file: ${line}`); if (line === 'nameserver 8.8.8.8'){ console.log('Found the right file. Reading lines should stop here.'); nameserver_flag = true; rl.close(); } }); rl.on('close', function(){ if (nameserver_flag === true){ console.log('Found nameserver 8.8.8.8'); } else { console.log('Could not find nameserver 8.8.8.8'); } }); } check_resolv_nameserver(); 

由于我一读到第一个匹配就发出一个closures事件rl.close(),所以我希望我的代码只读取第一行,然后停止进一步阅读。 但是,我的输出看起来像这样

 Line from file: nameserver 8.8.8.8 Found the right file. Reading lines should stop here. Found nameserver 8.8.8.8 Line from file: nameserver 45.65.85.3 Line from file: nameserver 40.98.3.3 

第一次比赛后如何让readline停下来让我继续做别的事情?

你也应该closures这个stream:

 const readline = require('readline'); const fs = require('fs'); const readStream = fs.createReadStream('file_to_read.conf'); // More code here ... const rl = readline.createInterface({ input: readStream }); // Rest of your code rl.close(); readStream.destroy();