readstream 管道未关闭

2024-01-28

我正在使用 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(使用前将#替换为@)

readstream 管道未关闭 的相关文章

随机推荐

  • 每次我在 R Shiny 中修改 numericInput 时都会重置 selectizeInput

    我正在学习闪亮并使用连接到许多 selectizeInputs 的 numericInput 如果数字输入等于 1 或 2 我想分别创建 1 和 2 selectizeInputs 并为每个 selectizeInput 选择名为 moda
  • 将变量与多个值进行比较的最有效方法?

    在我的程序中 有几次我不得不检查变量是否是众多选项之一 例如 if num lt 1 or 2 or 3 gt DO STUFF 我已经搞乱了 OR 但似乎没有什么是正确的 我试过了 if num 1 2 3 但它什么也没做 我想方便地区分
  • 如何通过 java 文件中的 setText 更新 fxml 文件中的文本字段?

    我希望根据某个值更新文本字段中的文本 为了使这个示例更简单 我缩小了我的程序 问题似乎是当我放置 top setText This is my new Text 时 我看了这个 如何更改java fx 2中TextField的文本 http
  • Seam @Transactional 注释不起作用?

    我在接缝组件上使用 Transactional 注释 类似于 Name myComponent AutoCreate public class MyComponent public void something doWork Transac
  • 如何从 SQL 表中检索分层数据

    我有 2 个表 T Employees 和 T Projects 每个项目都分配了不同数量的员工 我需要做的是获取每个员工的层次结构 并将其分配给特定的项目 请看下图和预期结果 如何在 Microsoft SQL Server 2008R2
  • 如何使用 Puppeteer 选择具有同一类的所有子 div?

    我是 Puppeteer 的新手 我正在尝试从使用同一类的两个 div 中获取 textContent div class post item div class post item info span class post item st
  • 将 javascript 数组传递到另一个页面

    我想知道是否有一种方法可以将数组及其内容传递到另一个页面以供使用 我正在使用一个数组来存储用于在谷歌地图上绘制折线的坐标 该数组在一页上工作正常 但是当我尝试调用该数组在另一张地图上绘制折线点时 似乎该数组已被清空并且没有绘制折线点 我尝试
  • 何时使用简单的 extern "C" ? [复制]

    这个问题在这里已经有答案了 也许我不理解 C 和 C 之间的区别 但是什么时候以及为什么我们需要使用 extern C 显然这是一个 链接约定 我简要地阅读了它 并注意到 MSVS 中包含的所有 h 头文件都用它包围了它们的代码 到底什么类
  • ai_socktype 不支持 Servname

    我正在使用 Vagrant 运行 Centos 虚拟机 机器似乎运行正常 但是当我尝试同步 Perforce 时 我可以看到以下错误 vagrant vagrant c5 x86 64 perforce p4 sync f Perforce
  • 如何在不重新启动服务器的情况下将 EAR 文件重新部署到 Web-Logic?

    我的 EAR 文件 包括 WAR 文件和 EJB jar 文件 已成功部署在 Web Logic 10 3 6 上 现在 我已经更新了 EAR 文件 并按照以下步骤再次重新部署 删除服务器上的旧文件并安装新的 EAR 文件 而无需重新启动服
  • 从操作系统获取事件

    我在 Windows 上工作 但在 Mac 上却卡住了 我有 Canon SDK 并构建了一个JNA包装在它上面 它在 Windows 上运行良好 但在 Mac 上需要一些帮助 在sdk中 有一个函数可以注册回调函数 基本上 当相机中发生事
  • 递归 Haskell 函数似乎不会终止

    为了提高我的 Haskell 技能 我正在尝试解决2018 年代码的到来 https adventofcode com 正如预期的那样 我已经陷入了第一天 特别是第二部分 第二部分 您注意到设备重复相同的频率更改列表 以及结束 要校准设备
  • XCTestCase 未在 setUp 类方法中启动应用程序

    我正在使用 XCode 8 和 XCTestCase 我创建了一个类 setUp 函数 在所有测试之前运行一次 另一个 setUp 在每个测试用例之前运行 我希望应用程序在所有测试用例之前启动一次 如果我在类 setUp 中使用 launc
  • 使用 Naudio 将 MP3 文件转换为 WAV 文件时遇到问题

    瑙迪奥图书馆 http naudio codeplex com http naudio codeplex com 我正在尝试将 MP3 文件转换为 WAV 文件 但遇到了一个小错误 我知道出了什么问题 但我真的不知道如何解决它 这是我正在运
  • _GLIBCXX_USE_CXX11_ABI、GCC 4.8 和 ABI 兼容性

    我们收到了一些为 Linux 编译的库 a 可能是用 GCC 6 x 编译的 我们使用的是 GCC 4 8 并且收到以下类型的错误 undefined reference to std cxx11 basic string当尝试链接时 通常
  • PHP 邮件停止工作

    前几天使用的时候mail 我让它工作了 但现在不行了 而且我不知道问题是什么 to email protected cdn cgi l email protection subject the subject message hello h
  • 如何获取 JSON 对象数组中所有子节点的 JSONPath?

    如何获取对象所有子节点的 JSONPath E g var data key1 children key2 value key3 value key4 key2 value key3 value key4 key5 value key1 c
  • 使用 numpy 处理 exp 溢出

    使用 numpy 我有一个函数的定义 def powellBadlyScaled X f1 10 4 X 0 X 1 1 f2 numpy exp numpy float X 0 numpy exp numpy float X 1 1 00
  • 检查文件是否存在(由命令行参数给出)

    我需要一个使用unix环境的C程序 我已经购买了 Unix环境下的高级编程 一书 到目前为止它已经帮了我很大的忙 然而 我的一些问题没有得到解答 我正在寻求一些帮助 我正在尝试编写一个程序 可以验证是否存在复制程序时输入的第一个和第二个参数
  • readstream 管道未关闭

    我正在使用 sax js 读取大型 xml 文件 解析器完成后我无法让程序退出 这是脚本的形状 删除了解析器逻辑 var fs require fs var sax require sax var feedFile foo xml var