Articles of 标准输出

无法从subprocess的标准输出中获取任何内容

我试图做一个非常简单的nodejs服务器,接收post请求,并将它们提供给一个简单的C程序,通过stdin和stdout使其所有的I / O。 我正在尝试使用以下脚本作为testing: var prc = require('child_process').spawn('./example'); // )none of these made it work) prc.stdout.setEncoding('ascii'); //prc.stdout.setEncoding('utf8'); prc.stdout.on('data', function (data) { console.log("child said something: " + data); }); prc.stderr.on('data', function (data) { console.log("stderr: " + data.toString()); }); prc.on('close', function (code) { console.log('process exit code ' + code); }); setInterval(function() { console.log("gonna write"); prc.stdin.write("prueba inicial\n"); console.log("wrote"); […]

将stdoutredirect到文件nodejs

我创造了: var access = fs.createWriteStream('/var/log/node/api.access.log', { flags: 'w' }); 然后pipe道: process.stdout.pipe(access); 然后尝试: console.log("test"); 并没有出现在/var/log/node/api.access.log。 但是,这种方式正在工作: process.stdout.pipe(access).write('test'); 有人可以解释我做错了什么?

节点中的错误,stderr,stdout有什么区别

我正在使用node.js并想要处理错误消息。 erro,stderr,stdout有什么区别? 当脚本shell,我redirectstderr,并发现有用的错误信息,并解决了问题。 我不清楚计算机的输出是什么types的概念。 任何人都可以用全面的方式解释吗? 谢谢。

在摩卡testing过程中将stdout和stderr静音

我会通过承认我可能正在做一些我不应该做的事情来做序。 但是既然我已经深深的了解了,我也可以理解为什么事情会这样发生。 我正在使用摩卡来testing一些Node.js代码。 此代码使用Winston日志库,它直接调用process.stdout.write()和process.stderr.write() ( source )。 它运作良好; 我对这种行为没有抱怨。 但是,当我对这段代码进行unit testing的时候,Mochatesting运行器的输出偶尔会穿插一些日志输出行,这在一些记者( dot , bdd )中是丑陋的,而在其他记者( bdd )中是彻头彻尾的无效的。 我想在不修改或inheritanceWinston的情况下阻止这个输出,而且我想避免修改应用程序本身,如果我可以避免的话。 我到达的是一组实用函数,它们可以用一个无操作函数暂时replaceNode的内build函数,反之亦然: var stdout_write = process.stdout._write, stderr_write = process.stderr._write; function mute() { process.stderr._write = process.stdout._write = function(chunk, encoding, callback) { callback(); }; } function unmute() { process.stdout._write = stdout_write; process.stderr._write = stderr_write; } 在各种testing规范中,我直接在产生不需要的输出的任何调用或断言之前调用了mute() ,并在之后直接unmute() 。 这感觉有点不好意思,但是工作起来 – […]

如何在terminal中编辑现有文本(并移动光标)?

我看过这个demo,打印出一段文字(就像inputsome-command –help时会得到的那样),然后跳回到文本中的几个关键字,然后改变文本的颜色已经在terminal打印出来了 。 这对我来说似乎很疯狂。 他们是怎么做到的? 开始思考,我猜stdout和stdin在技​​术上是一个“IOstream”,所以也许这是一个持续variables,跟踪光标的位置? 我记得在构build语言parsing器时做类似的事情。 目标是这样的:假设你在控制台中键入以下内容,并输出一个空白数组,因为在Node.js中,它们都是asynchronous的,我们不希望每次都在控制台中编写asynchronous函数: $ node app.js > App.User.all() => [] 然后当asynchronouscallback执行时,你回去编辑=> []来包含结果: $ node app.js > App.User.all() => [#<User id:1>, #<User id:2>…] 即使还有很多其他问题需要解决(至less与这个问题无关),而且我知道你可以定义一个全局的callbackApp.User.all(_c)像App.User.all(_c) )。 打印完成后如何编辑terminal输出?