如何在没有repl历史记录文件的情况下获取Node的REPL最后输入

时间:2019-01-20 16:46:45

标签: node.js input node-repl

我正在为当前项目进行自定义错误回溯/堆栈,我需要其中包含错误的行(作为字符串)。在文件中,我可以轻松地获得该行,但是在Node REPL中,我想不出任何方式来获取输入。

我尝试将.node_repl_history文件放入主目录(或者设置了NODE_REPL_HISTORY环境变量,如果已设置),我已经使用了process.stdin和普通的repl模块,但是没有似乎正在工作。

 var stack = this.stack.split("\n");
 //.... the stack array is shifted a bunch of times    
 else {
        var match = stack[0].match(/repl:(\d+):(\d+)/)
        var line = "";
        stack.push(`In <stdin> at line ${match[1]}:${match[2]}`)
        if (process.env["NODE_REPL_HISTORY"]) {
            if (process.env["NODE_REPL_HISTORY"] === "") {
                line = "<stdin>"
            }
            else {
                line = fs.readFileSync(process.env["NODE_REPL_HISTORY"], {encoding: "utf-8"}).split("\n")[0];
            }
        }
        else if (fs.existsSync(os.homedir() + ".node_repl_history")) {
            line = fs.readFileSync(os.homedir() + "\\.node_repl_history", {encoding: "utf-8"}).split("\n")[0];
        }
        stack.push(line);
        if(line !== "<stdin>") stack.push(" ".repeat(match[2] - 1) + "^");
    }

应该将line变量设置为产生错误的输入,但是它为我提供了之前的输入/行。

0 个答案:

没有答案