当前位置:  开发笔记 > 编程语言 > 正文

node.js stdout clearline()和cursorTo()函数

如何解决《node.jsstdoutclearline()和cursorTo()函数》经验,为你挑选了2个好方法。

从node.js教程中,我看到了这两个process.stdout函数:

process.stdout.clearLine();
process.stdout.cursorTo(0);

但我使用的是更新的node.js版本(4.2.4),并且这些功能不存在.我得到的process.stdout.clearLine is not a functionprocess.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



1> trogne..:

这是解决方案:

首先,要求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将光标移回到开头)


我有同样的问题.当它从终端运行时它起作用,当我从WebStorm运行时,我需要使用readline并使用你的方法.这是为什么?
因为当`process.stdout`不是tty时,`clearLine`和`cursorTo`是未定义的.并且WebStorm中的Node/NPM控制台是非Tty的,因为节点进程是通过输入/输出流重定向启动的.请参阅https://youtrack.jetbrains.com/issue/WEB-1933.

2> Imanou Petit..:

该的Readline模块是Node.js的一部分现在提供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)
}

推荐阅读
wangtao
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有