nodejs:process.stdout.write 的短别名

2024-05-24

我正在学习nodejs(而且我喜欢它!)。我试图弄清楚如何使用更短的别名console.log我发现我可以使用var cout=console.log并使用cout('[string]')从那时起。然后当我想使用process.stdout.write我也尝试为它创建一个简短的别名,使用var out=process.stdout.write。但是当我使用out('[string]'),我收到以下错误:

_stream_writable.js:220 var state = this._writableState; ^ 类型错误:无法读取未定义的属性“_writableState”

在 Writable.write (_stream_writable.js:220:19) 在 Socket.write (net.js:670:40) 在对象。 (/home/shayan/Desktop/nodejs/server.js:12:1)

在 Module._compile (module.js:571:32)

在 Object.Module._extensions..js (module.js:580:10) 在 Module.load (module.js:488:32) 在 tryModuleLoad (module.js:447:12) 在 Function.Module._load (module.js:439:3) 在 Module.runMain (module.js:605:10) 运行时(bootstrap_node.js:423:7)

这里有什么问题吗? 如何正确创建一个短别名process.stdout.write? Thanks


你不应该做这种“短别名”。它非常混乱,阅读你的代码的人不会理解为什么你使用随机函数名称而不是console.log。但是,如果您确实想创建函数别名,请考虑使用function:

function out(text) {
    //    ^    ^- argument accepted by the function
    //    |------ the function name
    process.stdout.write(text)
    //                     ^- pass the argument you accepted in your new function to the long function
}

我添加了一些解释,以防您不知道某个函数是如何工作的,您可以安全地删除它。

Edit:它不起作用的原因在于 Node.JS 的源代码。您返回的堆栈跟踪指向this https://github.com/nodejs/node/blob/master/lib/_stream_writable.js#L236 line:

Writable.prototype.write = function(chunk, encoding, cb) {
    var state = this._writableState;
    // ...
}

它尝试引用一个名为的变量_writableState from this。如所写here https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this#Function_context:

在函数内部,值this取决于函数的调用方式。

这意味着this指的是process.stdout你打电话时process.stdout.write,但是当您从别名调用它时,它是未定义的。因此你得到一个Cannot read property '_writableState' of undefined例外(如undefined不包含该变量,这对于write执行的函数)。

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

nodejs:process.stdout.write 的短别名 的相关文章

随机推荐

  • PowerBI区分空白值和0值

    有没有办法区分列中的空白值和列中的 0 值 当我使用 if 语句进行测试时 它们被视为相同的值 有什么建议吗 就在这里 在计算列中 首先测试值是否为空 然后测试是否为零 因此 创建一个标志并通过它过滤您的总和度量 即 No blanks s
  • 从 Excel 将参数传递到 SQL Server 上的 MS Query 中的临时变量

    我已经使用 Microsoft 查询创建了参数查询 如上所述here https superuser com questions 197453 run an sql query with a parameter from excel 200
  • WCF 缓存解决方案 - 需要建议

    我工作的公司正在寻求实施缓存解决方案 我们托管了多个 WCF Web 服务 并且需要缓存某些可以持久保存和获取的值 无论客户端与服务的会话如何 我正在研究以下技术 缓存应用程序块 4 1 使用 HttpRuntime 缓存的 WCF TCP
  • 基本矩阵错误?

    我试图通过扫描从相机拍摄的两个图像 检测图像中的特征 匹配它们 创建基本矩阵 使用相机内在函数计算基本矩阵 然后分解它以找到旋转和翻译 这是matlab代码 I1 rgb2gray imread 1 png I2 rgb2gray imre
  • 捕获数据包后会发生什么?

    我一直在阅读关于网卡捕获数据包后会发生什么的内容 我读得越多 我就越困惑 首先 我读过传统上 在网卡捕获数据包后 它会被复制到内核空间中的一个内存块 然后复制到用户空间 供随后处理数据包数据的任何应用程序使用 然后我读到了 DMA 其中 N
  • 不允许循环文件引用。发布 ASP.NET (2.0) 网站

    当我重新 构建 ASP NET 网站时 我没有收到任何错误 然而 当我发布该网站时 它给我一个 不允许循环文件引用 的信息 错误 我在网上读到了一些关于此的内容 它提供了一个batch false 选项 我尝试过但什么也没做 该页面有一个母
  • 我可以删除单个子实体而不加载整个集合吗?

    我有 2 个课程 如下所示 它们可以拥有非常大的集合 一个网站可能有 2 000 多个网站页面 反之亦然 class WebsitePage public int ID get set public string Title get set
  • 如何在 Android 中检查与配对设备的蓝牙连接状态

    我开发了一个蓝牙应用程序 它将连接到配对的设备并发送消息 但我必须先测试连接 我尝试了很多选择 但没有一个效果很好 那么您能给我发送任何可以做到这一点的代码示例吗 我创建了一个线程 但无法获得良好的连接状态来构建 if 函数 这是代码 pa
  • 获取 PHP 网站的根 URL

    我目前正在开发一个 PHP 项目 正在寻找一种方法来获取网站根目录的 URL 我的根目录有一个配置文件 所以我正在考虑使用它来找出 基本 URL 我正在寻找一种动态执行此操作的方法 以便我可以找到网站根目录的 URL 即http domai
  • 为什么我们应该在 Keras 中对深度学习数据进行标准化?

    我正在 Keras 中测试一些网络架构 以对 MNIST 数据集进行分类 我已经实现了一个类似于 LeNet 的方法 我看到在网上找到的例子中 有一个数据标准化的步骤 例如 X train 255 我在没有这种标准化的情况下进行了测试 我发
  • 如何更改mysql.sock?

    我已经通过二进制安装安装了mysql并按照以下步骤操作http dev mysql com doc refman 5 0 en binary installation html http dev mysql com doc refman 5
  • 使用 Python 的 optparse 模块时如何遵守 PEP 257 文档字符串?

    根据PEP 257 http www python org dev peps pep 0257 multi line docstrings命令行脚本的文档字符串应该是它的使用消息 脚本的文档字符串 a 独立程序 应该可用 作为其 使用 消息
  • 在 Android Studio 中设置 Http 代理

    我已经阅读了多个类似的问题和文档 但我无法解决我的机器所在的公司防火墙的问题 我收到的错误是 无法刷新 Gradle 项目 未知主机 services gradle org 我所阅读和理解的所有内容都让我相信这是一个 http 代理问题 我
  • angularjs ng-options从嵌套的json数组中选择

    我在我的范围内定义了一个 json scope People firstName John lastName Doe Choices Name Dinner Options Name Fish ID 1
  • 使用 Cheerio 选择具有属性的元素

    选择具有特定属性的所有 dom 元素的最有效方法是什么
  • 如何扩展类型参数,使其仅允许字符串文字类型,而不允许“字符串”本身?

    我需要一个本质上是 除 reservedKeywords 之外的任何字符串 的类型 然而 这显然是要么不可能 要么棘手且笨拙 https stackoverflow com a 63549561 1730082 我可以满足于必须指定要使用的
  • 使用 PostgreSQL 安装 PassportJS

    是否有使用 PostgreSQL 设置 PassportJS 的演练教程 即用 PostgreSQL 替换 MongoDB 好吧 这已经开放了一段时间 但由于我发现自己也遇到了同样的问题 所以就这样了 您唯一需要做的就是使用 Postgre
  • Mongo 正则表达式用于“不匹配”或反向[重复]

    这个问题在这里已经有答案了 我的 mongo 文档都包含一个名为templateName 有一些包含该值的文档 a SystemDefaultTemplate b SystemDefaultTemplate c SystemDefaultT
  • next.js 13 服务器组件中的访问域和完整路径

    如何使用应用程序目录访问 Next js 13 中服务器组件中的域名和完整路径 在 Next js 的早期版本 例如版本 12 中 我可以使用 getServerSideProps 函数中的上下文来执行此操作 但应用程序目录中不再支持此操作
  • nodejs:process.stdout.write 的短别名

    我正在学习nodejs 而且我喜欢它 我试图弄清楚如何使用更短的别名console log我发现我可以使用var cout console log并使用cout string 从那时起 然后当我想使用process stdout write