调用 Node.js fork 时处理“找不到模块”错误

2023-11-21

如何捕获调用不存在的文件的 .fork() 错误?

var cp = require('child_process');
var fk = cp.fork("missing-file.js");

喷出

module.js:340
    throw err;
      ^
Error: Cannot find module 'path-to-here/missing-file.js'
    at Function.Module._resolveFilename (module.js:338:15)
    at Function.Module._load (module.js:280:25)
    at Function.Module.runMain (module.js:497:10)
    at startup (node.js:119:16)
    at node.js:906:3

我试过了

try {
    var cp = require('child_process');
    var fk = cp.fork("missing-file.js");
} catch(err) {
    console.log("async error doesn't get caught here.");
}

fk.on('error', function(err) {
   console.log("this never gets called");
})

process.on('uncaughtException', function(err) {
  console.log("this never gets called either");
});

但这些都没有发现错误。

Joyent 的文档表示在以下情况下应发出错误事件:

  1. 无法生成该进程,或者
  2. 该进程无法被终止,或者
  3. 无论出于何种原因,向子进程发送消息失败。

但这似乎发生在#1 之前。

我在看处理node.js中require()模块抛出的错误但那里的解决方案不起作用。

我如何捕捉这个错误?


这里没有错误。node开始一切正常,找不到文件,然后退出。这些事情都不会在父进程中引发错误。然而,第二步(“无法找到文件”)导致子进程在其进程上发出一些文本。stdout,默认情况下是从父进程继承的。这就是您所看到的文本的来源(要抑制它,请传递fork the silent: true选项)。

如果您尝试检测此错误,可以在close事件。该处理程序将使用 2 个参数进行调用,但您只关心第一个参数:退出代码。当 Node 找不到源文件时,它会使用退出代码 8(尽管请注意,脚本也可以使用退出代码 8,因此这并不是万无一失的)。请注意,退出代码 0 通常表示进程成功结束。

因此,如果您想对未找到的文件采取行动并禁止显示错误消息stdout, 你可以:

var cp = require('child_process');
var fk = cp.fork("missing-file.js", {silent: true});
fk.on('close', function(code) {
  if(code == 8) {
    // Handle the missing file case here.
  }
})
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

调用 Node.js fork 时处理“找不到模块”错误 的相关文章

  • 尝试安装 gulp 时 npm 挂起

    UPDATED 当我尝试使用 npm install 或任何变体安装任何软件包时 npm install gulp g verbose npm install gulp verbose npm install gulp npm instal
  • 在spawn中使用两个命令(使用管道|)

    我正在内存中将文档转换为 pdf unoconv 并在终端中打印 pdftotext unoconv f pdf stdout sample doc pdftotext layout enc UTF 8 out txt 工作中 现在我想使用
  • Firebase 函数,admin.database().ref(...).get() 不是函数

    我正在开发一个 Android 应用程序 并使用 firebase 作为它的后端 我正在尝试让通知系统正常工作 该系统依赖于监听数据库中的更改 但遇到问题 因为我收到以下错误 想知道是否有人能够提供帮助 可以提供任何额外的代码 Fireba
  • 如何在 vb.net 中使用 Stacktrace 返回错误行号

    我正在尝试创建某种错误捕获方法来返回错误行号 当进程中止时 我们会发送一封中止电子邮件 该电子邮件为我们提供了错误号 and 错误描述但我想知道实际上哪里出了错误 我知道你可以执行以下操作 1 code here 2 code here 3
  • 如何在 package.json 中对嵌套子模块和 TypeScript 使用“导出”?

    我想利用新的优势 出口 https nodejs org api packages html packages exportsNode js 的功能package json这样我就可以执行以下操作 exports dist index js
  • 以html格式显示npm审计漏洞

    有没有办法将 npm 审计报告显示为 html 页面 目前我只能看到使用以下命令以 json 格式输出报告的选项 npm audit json 我写了一个NPM包 https www npmjs com package npm audit
  • 具有独立 Node.js 服务器的虚拟主机

    目前有没有一种方法可以使用node js服务器进行虚拟托管 即在一个IP下托管多个域 当然 你可以使用bouncy https github com substack bouncy or 节点 http 代理 https github co
  • Nodejs - 处理和发送多部分请求,

    我的应用程序在 Nodejs 服务器上运行 Node Js 还充当来自应用程序的请求的中间件 代理 因此 从浏览器开始 所有 REST 调用都会转到 NodeJs 然后转到 Java API 我发现处理多部分表单数据的请求时出现问题 我在
  • 如何使用 Web 套接字和 Angular CLI 设置代理

    我有一个使用 Angular CLI 构建的简单 Web 应用程序 我希望它使用网络套接字与后端通信 我已经编写了后端 并使用一个简单的 index html 页面进行了测试 服务器可以在套接字上发送和接收该页面 在我的 angular c
  • 当异常抛出到路由之外时,如何在 Slim 框架中传递错误页面?

    我正在尝试了解处理 Slim 框架应用程序中抛出的异常和最终页面交付的操作顺序 基本上 如果我在类中抛出异常 我希望 Slim 提供漂亮的 Twig 500 页面 但当在路由之外抛出异常时 我什至无法让 Slim 提供自己的正常错误页面 给
  • 使用端口 80 的 AWS Elastic Beanstalk 上的 WebSocket 问题

    我正在将一个 node js 应用程序从 Heroku 迁移到在端口 80 上使用 WebSocket 的 AWS Elastic Beanstalk WebSocket 在 AWS Elastic Beanstalk 上返回 301 错误
  • Mongodb更新很多

    我正在使用express js 和 npm 模块 mongodb 进行开发 并以 mongodb 作为数据库 我有两个集合 即 用户 和 活动 一个用户可能有数千个活动 首先 我将用户的 id 姓名和图片 url 存储到 关系的活动文件 请
  • 捕获另一个进程未处理的异常

    我想知道我是否可以捕获我开始使用 Process Start 的另一个进程抛出的未处理的异常 我知道我可以用这个捕获标准错误link http social msdn microsoft com Forums en US csharpgen
  • 如何在nodejs缓冲区中存储整数?

    节点jsBuffer http nodejs org docs v0 4 12 api buffers html是相当膨胀 然而 它似乎适合存储字符串 构造函数采用字符串 字节数组或要分配的字节大小 我使用的是 Node js 0 4 12
  • 当请求新页面时,如何将 AngularJS 路由与 Express (Node.js) 结合使用?

    我正在使用 Express 它从静态目录加载 AngularJS 一般情况下我会要求http localhost 其中 Express 为我服务index html以及所有正确的 Angular 文件等 在我的 Angular 应用程序中
  • Node.js 检测两个猫鼬查找何时完成

    我正在尝试使用自动完成功能初始化两个输入library https www devbridge com sourcery components jquery autocomplete 当我加载页面时 我将触发 Ajax 来初始化两个输入文本
  • 如何在 Google Translate Node.js 代码中设置 API KEY

    我正在尝试创建一个使用 Google Translate API 的 Node js 代码 我从以下代码中得到了谷歌文档 https cloud google com translate docs translating text 但是当我
  • 如何使用 Playwright 使用选择器查找框架 (iframe)

    我有一个小问题 无法找到使用 Microsoft Playwright 框架的答案 根据您可以使用以下代码获取 iframe const frame page frame frame login 但是如何使用选择器来查找 iframe 并与
  • 很好地处理数据库约束错误

    再一次 它应该很简单 我的任务是在我们的应用程序的域对象中放置一个具有唯一约束的特定字段 这本身并不是一个很大的挑战 我刚刚做了以下事情 public class Location more fields Column unique tru
  • 如何处理 MongoDB 的断开连接错误

    我在 Node js 进程中看到了这个未捕获的异常 Uncaught exception Error read ETIMEDOUT at TCP onStreamRead internal stream base commons js 16

随机推荐

  • innerHTML 适用于 IE 和 Firefox,但不适用于 Chrome

    数据不会在 Chrome 中显示 除非我在 Chrome 中打开 IE 选项卡 转到该网站 然后将其关闭回 Chrome 抱歉 如果这没有多大意义 window onload function var url http freeiz com
  • python中的k-means:确定哪些数据与每个质心相关联

    我一直在使用scipy cluster vq kmeans用于进行一些 k 均值聚类 但想知道是否有一种方法可以确定每个数据点 假定 与哪个质心相关联 显然你可以手动执行此操作 但据我所知 kmeans 函数不会返回此值 有一个功能kmea
  • 如何防止 pexpect 回显密码?

    默认情况下 pexpect spawn 不会输出任何东西 但是当我指定logfile sys stdout它还会回显密码 例如ssh 那么我怎样才能看到与spawned 进程没有回显密码 就像Expect the Tcl扩展 吗 预期示例
  • 使用 Google API 发送邮件时出错 - “'原始'RFC822 有效负载消息字符串或通过 /upload/* 需要 URL 上传消息”

    我正在尝试通过 python 中的 Google API 发送消息 并且正在尝试运行几乎直接从谷歌示例页面 def CreateMessage sender to subject message text message MIMEText
  • 如何在等距平铺地图中变换鼠标位置?

    因此 我设法自己编写了第一部分 算法 来计算每个图块在绘制此地图时应放置的位置 见下文 然而 我需要能够将鼠标位置转换为适当的单元格 而且我几乎要抓狂了 因为我无法找出如何从鼠标位置获取单元格的方法 我担心的是 它涉及一些相当高的数学知识
  • 使用 matplotlib 对极坐标图中的“单元格”进行着色

    我有一堆规则分布的点 n 6 r 1 8 每个点的值都在 0 1 中 我可以使用 matplotlib 中的值绘制它们 polar thetas rs c values 但是 我不想只有一个微薄的小点 而是用与该点的值相对应的颜色来对相应的
  • 使用 out 参数反思静态重载方法

    我在通过反射调用带有输出参数的重载静态方法时遇到一些问题 并且希望得到一些指针 我正在寻找动态创建类似的类型System Int32 or System Decimal 然后调用静态TryParse string out x 方法就可以了
  • Python Pandas - 查找具有最大聚合值的连续组

    我有一个包含日期时间和整数的数据框 import numpy as np import pandas as pd df pd DataFrame df dt pd date range 2017 01 01 12 00 2017 01 01
  • 如何在 PostgreSQL 中以编程方式查找继承表?

    我有一个 PostgreSQL 8 3 数据库 其中使用了表继承 我想获取所有表及其模式名称的列表 该模式名称是使用查询从基表继承的 我们有什么办法可以使用 PGSQL 得到这个吗 由于您使用的是旧版本的 PostgreSQL 您可能必须使
  • AutoMapper 无法将 enum 转换为 nullable int?

    我收到 AutoMapperMappingException 异常 引发了 AutoMapper AutoMapperMappingException 类型的异常 gt System InvalidCastException 从 Dummy
  • OpenGL 将纹理映射到球体

    我有 OpenGL 程序 我想用地球位图来纹理球体 我在 Blender 中准备了网格并将其导出为 OBJ 文件 程序正确加载适当的网格数据 顶点 uv 和法线 和位图 我已经检查了它与骨骼位图的纹理立方体 我的程序是纹理球体 但不正确 或
  • 接口的所有方法都是抽象的吗?

    我看到大多数地方都写着 All of the methods in an interface are abstract 但接口也可能包含default methods and static methods方法体存在于默认方法和静态方法中 那
  • 哪个 PDF 生成 API (Java) 支持古吉拉特语字体?

    我尝试过 iText PDFBox 和 Oracle Forms 我还成功地使用 iText 生成了古吉拉特语 PDF 文档 但是 不幸的是它没有生成古吉拉特语 UTF 8 语言的正确字体 我的项目是 jdk 1 4 这是强制使用的 所以
  • 按具有最大列值的记录过滤 Django 查询

    有没有一种简单的方法可以根据列中具有最大 最小值的记录来过滤 Django 查询 我本质上是在问these 问题 但是在 Django 的 ORM 的特定上下文中 e g 假设我有一个模型旨在存储每个人电话号码的历史值 class Pers
  • 将 TabControl ItemsSource 绑定到 ViewModel 集合

    由于某种原因 我很难得到我的TabControl绑定时正确显示ItemsSource to a ObservableCollection视图模型 我的设计基于此处找到的教程 http msdn microsoft com en us mag
  • Resharper 单元测试运行程序找不到内容文件

    我有一些测试依赖于我标记为 内容 和 始终复制 的一些文件 我使用 DeploymentItem 属性来确保在 VS 外部运行 mstest 时将它们复制到输出目录 然而 当在 VS 中使用 Resharper 测试运行器时 这些文件永远不
  • F# - int 类型与 unit 类型不兼容

    对于函数式语言来说相当陌生 但我正在使用大量 F 维护别人的代码 谁能对此提供一些见解 let mtvCap Rendering MTViewerCapture mtViewer mtvCap GetCapture mtvCap ToWpf
  • SQL 过程中的打印语句会影响性能吗?

    我正在使用 SQL Server 程序并且我有使用的习惯Print存储过程中的语句用于区分过程代码 我的数据库中有近 200 250 个过程 print 语句应该影响性能吗 我正在开发多用户 Windows 应用程序 我发现在我的桌面上运行
  • ASP.NET MVC 从 URL 获取路由值

    我想计算出该路线的价值是多少UrlReferrer在控制器的动作中 我无法弄清楚传入的 URL 在 MVC 管道的哪一部分被转换为 RouteValues 我想要实现的目标与此接近 你需要打电话RouteTable Routes GetRo
  • 调用 Node.js fork 时处理“找不到模块”错误

    如何捕获调用不存在的文件的 fork 错误 var cp require child process var fk cp fork missing file js 喷出 module js 340 throw err Error Canno