我正在为当前项目进行自定义错误回溯/堆栈,我需要其中包含错误的行(作为字符串)。在文件中,我可以轻松地获得该行,但是在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
变量设置为产生错误的输入,但是它为我提供了之前的输入/行。