console.log消息被截断

console.log message is truncated(console.log消息被截断)
本文介绍了console.log消息被截断的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是木偶师新手。我以前有PhantomJS和CasperJS,但在设置较新的服务器(FreeBSD12)时发现对PhantomJS的支持消失了,CasperJS给我带来了分段故障。

我能够很好地将我的应用程序移植到Pupeteer,但是遇到了一个问题,当我想要从表中捕获数据时,这些数据似乎不完整或被截断。

我需要一个表中的所有信息,但最终得到的信息总是更少。

我尝试过较小的表,但结果也被截断了。 我不知道console.log缓冲区是否可以扩展,或者是否有更好的方法来获取表中所有TD的值。

const data = await page.$$eval('table.dtaTbl tr td', tds => tds.map((td) => {
    return td.innerHTML;
}));

console.log(data); 

我应该能够获取所有行,但我得到的却是这个

[ 'SF xx/xxxx 3-3999 06-01-16',
'Sample text - POLE',
  '',

 /* tons of other rows (removed by me in this example) <- */

  '',

 /* end of output */ ... 86 more items ]

我还需要86件其他物品! 因为我让PHP在代码执行时从stdout中提取它。

推荐答案

为什么不工作

在幕后,console.log使用util.inspect,它生成用于调试的输出。为了创建合理的调试信息,此函数将截断过长的输出。引用文档:

方法的作用是:返回用于调试的对象的字符串表示形式。util.spect的输出可能随时更改,不应以编程方式依赖


解决方案:使用process.stdout

如果要将输出写入stdout,可以使用process.stdout,它是一个可写的流。它不会修改/截断您在流上写入的内容。您可以这样使用:

process.stdout.write(JSON.stringify(data) + '
');

我在末尾添加了一个换行符,因为函数本身不会生成换行符(与console.log相反)。如果您的脚本不依赖它,只需将其删除即可。

这篇关于console.log消息被截断的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Update another component when Formik form changes(当Formik表单更改时更新另一个组件)
Formik validation isSubmitting / isValidating not getting set to true(Formik验证正在提交/isValiating未设置为True)
React Validation Max Range Using Formik(使用Formik的Reaction验证最大范围)
Validation using Yup to check string or number length(使用YUP检查字符串或数字长度的验证)
Updating initialValues prop on Formik Form does not update input value(更新Formik表单上的初始值属性不会更新输入值)
password validation with yup and formik(使用YUP和Formick进行密码验证)