我正在使用 sax-js 读取大型 xml 文件。解析器完成后我无法让程序退出。这是脚本的形状,删除了解析器逻辑。
var fs = require('fs');
var sax = require('sax');
var feedFile = 'foo.xml';
var saxStream = sax.createStream(true)
.on('opentag', function(node) { // do stuff })
.on('end', function() {
console.log("parser end event");
});
var options = {
flags: 'r',
encoding: 'utf8',
mode: 0666,
bufferSize: 1024
};
fs.createReadStream(feedFile, options, function(err) {
throw err;
})
.on('end', function() {
console.log("read stream end event");
})
.pipe(saxStream);
一切正常。控制台收到这样的消息
read stream end event
parser end event
然后该进程应该退出。它不是。我缺少什么?
编辑:我缺少什么。有一个资源仍处于打开状态,因此该节点无法退出。诱惑是开始尝试在某个地方、任何地方调用 process.exit() 。我自己在这种情况下尝试过,但它破坏了东西。
我的脚本无法退出,因为我有一个打开的 mongodb 连接(由 mongoose 管理)。基本上(不详细)修复它的原因如下:
saxStream.on('end', function() {
console.log("parser end event");
mongoose.disconnect();
};
None
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)