未知方法 process.openStdin()

2023-12-25

我正在尝试将 grep 结果通过管道传输到 nodejs 脚本中。我发现我应该从 process.stdin 接收数据。

我还发现了几种使用标准输入的方法。但它们是不同的,我无法找到有关它的所有信息。我知道四种方法(前 3 种以var data = ""):

1)搜索结果中最受欢迎的

process.stdin.resume();
process.stdin.setEncoding( 'utf8' );
process.stdin.on('data', function(chunk) { data += chunk; });
process.stdin.on('end', function() { console.log('data: ' + data); });

2)看起来像第一个,但功能未知process.openStdin()

var stdin = process.openStdin();
stdin.on('data', function(chunk) { data += chunk; });
stdin.on('end', function() { console.log('data: ' + data); });

3)在文档中我读过调用stdin.resume()将标准输入更改为“旧类型”。因此,如果我们没有调用“恢复” - 我们可以使用“可读”事件

process.stdin.setEncoding('utf8');
process.stdin.on('readable', function() { data += process.stdin.read(); });
process.stdin.on('end', function() { console.log('data: ' + data); });

4)使用模块readline。只要 grep 结果在多行中,并且我不需要自己拆分接收到的数据,它就非常有用。但很长一段时间我无法理解为什么所有信息都直接通过管道传输到标准输出。然后我发现我们可以在创建接口时传递空对象而不是 process.stdout ,并且数据不会通过管道传输到输出。

var readline = require('readline'),
//rl = readline.createInterface(process.stdin, process.stdout);
rl = readline.createInterface(process.stdin, {});
rl.on('line', function(data) { console.log('line: ' + data); });

5)我自己的变体。使用另一个模块“split” - 它允许从流中读取数据并按指定符号将数据划分为块(\r?\n默认情况下)。我用它来处理套接字,并且只要 stdin 也是可读流 - 我们就可以在这里使用它。

var split = require('split');
process.stdin.setEncoding('utf8');
process.stdin.pipe(split()).on('data', function(data) { console.log('line: ' + data); });

我的问题是“什么是process.openStdin();????"

我搜索了谷歌的每个页面,但没有找到任何关于此功能的文档!

另外,在搜索时我发现,nodejs 的官方文档很丑陋 - 没有提到可用的版本方法,没有对许多对象/方法的详细描述,没有用户评论。而这个方法(openStdin) - 存在并且有效,但没有描述!搞什么???


在写问题时我找到了答案:)

它是在源代码 https://github.com/nodejs/node/blob/b6da225799cd754e6696586e759218d7514fdd85/lib/internal/process/stdio.js#L141节点的:

process.openStdin = function() {
  process.stdin.resume();
  return process.stdin;
};

但我想知道,为什么文档中没有描述呢?如果它是一个仅供私人使用的函数,为什么它被许多人使用,谁写了关于使用 stdin 的文章?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

未知方法 process.openStdin() 的相关文章

  • Rails/Passenger/Node.js:ExecJS“找不到 JavaScript 运行时”

    我正在尝试使用 Node js 作为我的 Rails 应用程序的 JavaScript 运行时 我在 Ubuntu 12 0 4 上使用 Phusion Passenger 模块和 Nginx 作为我的 Web 服务器 每次我访问 Rail
  • 找不到模块:错误:无法解析“react-dom/client”

    我正在将 React 与以下软件包一起使用 name demo version 0 1 0 private true dependencies testing library jest dom 5 16 4 testing library
  • 从 HTML 表单发送数据到 Node.js 服务器

    我正在学习 Node js 我的服务器中有这个 var http require http var url require url http createServer function request response response w
  • EJS - 包含返回找不到包含文件“header.ejs”

    我尝试像这样用 ejs 渲染 html const ejs require ejs fs require fs str fs readFileSync dirname mail templates test ejs utf8 console
  • Bash:替换管道标准输入中的子字符串

    我尝试用新的子字符串替换标准输入中的某个子字符串 在读取几个文件后 我必须从管道获取标准输入cat 然后我想将更改后的字符串向前推到管道中 这是我尝试做的 cat file1 file2 echo cat path to file path
  • 在 Express 中设置客户端可访问 Cookie

    我正在开发一个使用 Express 和 SocketIO 的 Node 应用程序 我想在我的 Express 控制器中设置一个 cookie 然后可以从我的客户端 Javascript 代码访问该 cookie 我尝试的一切似乎都不起作用
  • 无法在 postgres insert 中插入问号

    我正在尝试运行一个简单的 Postgres SQL 插入 insert into Resources values 1 How are you 但插入后的结果是 ID Data 1 How are you 1 我知道 要插入单引号等字符 我
  • Node.js - Async.js:并行执行如何工作?

    我想知道 async js 中并行执行是如何工作的 async require async async parallel function callback for var i 0 i lt 1000000000 i Do nothing
  • Node.js:将 repl 挂接到远程节点服务器

    假设我有一个节点服务器在 mysite com 上运行 有没有办法设置该服务器以便我可以使用节点的repl api http nodejs org docs latest api repl html to securely从我的本地计算机连
  • 将变量从 jade 传递到 ng-init 不起作用

    我正在尝试以角度将对象从玉传递到 ng init 这 不起作用 ng init tables JSON stringify tables 这 扩展但是 ng init tables JSON stringify tables 输出未转义并填
  • 二进制模式下的 Windows 管道

    我在windows中编写了一个程序 它将播放通过stdin发送给它的二进制音频 我将其称为play 就像linux程序一样 然后我写了一个单独的程序如下 FILE f popen aplay exe wb FILE song fopen C
  • 寻找在 gulp 中复制文件并根据父目录重命名的方法

    对于每个模块 我都有一些需要复制到构建目录的文件 并且正在寻找一种方法来最大限度地减少重复代码 gulp src client src modules signup index js pipe gulp dest build public
  • Jade - 从不同目录加载模板

    我正在尝试处理 Peepcode 的 Node js Full Stack 视频 他们似乎使用的是旧版本的express jade 没有提到使用块 扩展来渲染布局 应用程序中使用的设置是有一个为所有子应用程序加载的 views layout
  • 从子文件夹运行的 Node.js 服务器

    所以我参加 Node js 聚会已经很晚了 主要是没人邀请我 Thanks 也就是说 我开始解决这个问题 我有 ASP 经典背景 所以有一些东西我还没有理解 如果有人能指出我正确的方向 那就太好了 提前致谢 因此 我正在以标准方式设置服务器
  • Node.js 中的 JSON Zip 响应

    我对 node js 还很陌生 我正在尝试发回包含 JSON 结果的 zip 文件 我一直在尝试弄清楚如何去做 但还没有达到预期的结果 我正在使用 NodeJS ExpressJS LocomotiveJS Mongoose 和 Mongo
  • npm i 导致许多 ERESOLVE 问题

    我收到此错误npm i npm ERR code ERESOLVE npm ERR ERESOLVE unable to resolve dependency tree npm ERR npm ERR Found email protect
  • npm 错误! asyncWrite 不是一个函数

    npm 安装 g firebase tools npm 错误 asyncWrite 不是一个函数 npm 错误 pna nextTick 不是函数 npm 错误 此运行的完整日志可以在以下位置找到 npm 错误 home developer
  • 对数组进行分组并获取计数[重复]

    这个问题在这里已经有答案了 假设我有这样的数组 foo bar foo bar bar bar zoom 我想将其分组 这样我就可以得到这样的计数 foo 2 bar 4 zoom 1 有没有一个实用程序可以做到这一点 只需使用该功能Arr
  • Mongodb 的 Mongoose 与 Mongoose

    我正在学习 NodeJ 要从 NodeJS 连接并使用 MongoDB 我看到很多使用 Monk 或 Mongoose 的示例 这两个库等效吗 它们具有相同的功能还是都有特定的用途 作为 NodeJS 的初学者 我应该使用哪个 以下是使用
  • 是否可以使用 fs.createWriteStream 在文件中间写入文本? (或者一般在 Node.js 中)

    我正在尝试写入文本文件 但不是像appendFile 那样在最后写入或通过替换整个内容 我看到可以选择从 fs createwritestream 的启动参数开始的位置 gt https nodejs org api fs html fs

随机推荐

  • 递归构造函数调用错误找不到解决方案

    我在四个公共金枪鱼部分 部分 可能是一个类或其他东西 处收到递归构造溢出调用错误 它适用于教程 但不适合我 似乎看不到在哪里 public class tuna private int hour private int minute pri
  • 如何检查变量是否是数组?

    我对变量名有一个循环 我需要检查变量的内容是否是数组 for varname in AA BB CC do local val if varname is array then how can I perform this test ech
  • 如何在 Chrome DevTools 网络面板中按文本和属性进行过滤?

    我想通过 URL 中的方法属性和文本过滤 Chrome DevTool 的网络面板 例如 如果我在 URL 中搜索文本 chromequestion 并且仅搜索 HTTP GET 请求 忽略 PUT POST DELETE 等 I am a
  • JOOQ 查询的时间戳精度

    我有一个 PSQL 原始查询 我想将其转换为 JOOQ 查询 SELECT DISTINCT date trunc day ref date AS refdate FROM income WHERE probos id probosId 我
  • 在 python lxml 库中使用西里尔字母的正确方法是什么

    我尝试生成其中包含西里尔字母符号的 xml 文件 但结果却出人意料 避免这种结果的最简单方法是什么 例子 from lxml import etree root etree Element print etree tostring root
  • 监听元素的创建,并在元素出现在 Chrome 扩展程序的页面上时触发事件

    是否可以让 Chrome 扩展监听尚未创建的元素的出现 假设用户单击按钮并且单击事件创建一个元素 div My Div div 并将其添加到页面 DOM 是否可以设置一个侦听器 在该元素出现时自动触发事件 或者我是否必须每隔 X 毫秒轮询页
  • 智能字段注释 - valuehelp 下拉菜单

    我有一个值帮助字段 并且只想在下拉列表中查看说明 而不是代码 选择后 想要将代码存储在另一个处于隐藏模式的字段中 为此 我定义了以下注释
  • 还有比 PHPDoc 更好的吗? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有没有人使用其他任何东西来记录他们的PHP代码比PHPDoc 是否有任何工具可以读取相同的文档语法但提
  • 在 PowerShell 中启用本地用户权限分配

    我之前问过类似的问题 以便在某个域用户的 PowerShell 中获得本地用户权限 现在我想启用该权限 我希望启用一些权限 但在本示例中 我将使用登录作为批处理作业 默认情况下 Windows Server 2008 中没有 Ntright
  • Knockout 中 Observable 的设置值未更新

    每天都有大量的问题链接回为什么我不能设置可观察值的值 而不是有这么多不同的答案说同样的事情 我想创建一个问题供每个人参考 Knockout Observable Observable Array 的设置值不会更新 设置我的可观察 obser
  • 使用 OpenXML 将背景图像添加到 Excel

    我正在使用 Open XML 创建 Excel 我想向 Excel 添加背景图像 不要告诉我将图像添加到 Excel 并与 OpenXML Productivity Tool 进行比较 请让我知道执行此操作的提取方法 我已经深入研究使用 O
  • 如何在Flask Sqlalchemy中分离Master Slave(DB读/写)

    我正在尝试通过 Flask Sqlalchemy 分离读取和写入数据库操作 我正在使用绑定来连接到 mysql 数据库 我想在主机中执行写入操作并从从机中读取操作 似乎没有内置的方法来处理这个问题 我是Python新手 很惊讶像这样急需的功
  • 以低优先级启动进程(使用 Runtime.exec / ProcessBuilder.start)

    我需要在低优先级下启动一个 CPU 密集型系统进程 这样它就不会减慢我的服务器速度 我怎样才能在 Linux 上做到这一点 这与这个问题类似 使用 Runtime exec ProcessBuilder start 以低优先级启动 Java
  • Java随机类不是真正随机的?

    我正在尝试模拟我发现的数学难题http blog xkcd com 2010 02 09 math puzzle http blog xkcd com 2010 02 09 math puzzle 然而 java random 类返回奇怪的
  • 退出系统调用的正确常量是什么?

    我正在尝试学习 x86 64 汇编 并使用 GCC 作为我的汇编器 我使用的确切命令是 gcc nostdlib tapydn S D ASSEMBLY 我主要使用 gcc 作为其预处理器 这是tapydn S global start i
  • 在:数字之前右对齐 CSS?

    我想要对段落进行编号 而不需要使用有序列表 我试图通过在 CSS 中使用 content counter paragraph 来实现此目的 以便我创建的每个段落块都会在其左侧生成一个数字 pass counter reset paragra
  • 按日期差异对结果排序

    我们有一个按输入日期的 1 个月的日期范围查询的 solr 结果 如果我输入 2012 12 01 我会得到从 2012 11 01 到 2013 01 01 的结果集 这工作正常 但我们希望在与输入日期的日期差异之后对结果进行排序 例如
  • HtmlUnit 下载文件后无法检索页面

    我在 Java 中的 HtmlUnit 中遇到了这个奇怪的问题 我用它从网站下载一些数据 过程是这样的 1 登录 2 对于每个元素 汽车 3 搜索汽车 4 从链接下载 zip 文件 代码 创建网络客户端 webClient new WebC
  • codeigniter 类别 -> 子类别 -> 子子类别系统

    好的 所以我很新codeigniter从我现在所学到的来看 我不知道如何创建一个动态category gt subcategory gt subsubcategory system 您能给我一些指导吗 一些参考资料 任何可以指导我应该学习什
  • 未知方法 process.openStdin()

    我正在尝试将 grep 结果通过管道传输到 nodejs 脚本中 我发现我应该从 process stdin 接收数据 我还发现了几种使用标准输入的方法 但它们是不同的 我无法找到有关它的所有信息 我知道四种方法 前 3 种以var dat