node.js stdout clearline()和cursorTo()函数
从node.js教程中,我看到了这两个process.stdout函数:
process.stdout.clearLine(); process.stdout.cursorTo(0);
但是我使用了更新的node.js版本(4.2.4),并且这些函数不存在。 我得到process.stdout.clearLine is not a function
和process.stdout.cursorTo is not a function
。
node.js版本4.2.4上clearLine和cursorTo的等价物是什么?
编辑:
那些也不工作:
process.readline.clearLine(); process.readline.cursorTo(0); function writeWaitingPercent(p) { process.readline.clearLine(); process.readline.cursorTo(0); process.stdout.write(`waiting ... ${p}%`); }
我得到Cannot read property 'clearLine' of undefined
这是解决scheme:
一,要求readline:
var readline = require('readline');
然后,使用cursorTo像这样:
function writeWaitingPercent(p) { //readline.clearLine(process.stdout); readline.cursorTo(process.stdout, 0); process.stdout.write(`waiting ... ${p}%`); }
我已经评论clearLine,因为在我的情况下是无用的(cursorTo将光标移回到开始处)
作为Node.js一部分的Readline模块现在提供了readline.cursorTo(stream, x, y)
, readline.moveCursor(stream, dx, dy)
和readline.clearLine(stream, dir)
方法。
使用TypeScript,您的代码应如下所示:
import * as readline from 'readline' // import readline = require('readline') also works /* ... */ function writeWaitingPercent(p: number) { readline.clearLine(process.stdout, 0) readline.cursorTo(process.stdout, 0, null) let text = `waiting ... ${p}%` process.stdout.write(text) }
以前的代码将会转化为以下Javascript(ES6)代码:
const readline = require('readline'); /* ... */ function writeWaitingPercent(p) { readline.clearLine(process.stdout, 0); readline.cursorTo(process.stdout, 0, null); let text = `waiting ... ${p}%`; process.stdout.write(text); }
作为一种替代方法,您可以使用下面的JavaScript代码(ES6):
const readline = require('readline'); /* ... */ function waitingPercent(p) { readline.clearLine(process.stdout, 0) readline.cursorTo(process.stdout, 0) let text = `waiting ... ${p}%` process.stdout.write(text) }
process.readline.cursorTo和process.readline.clearLine
节点v4.2.4文档