我正在尝试为测试运行器testem编写一个电子启动器。Testem 将每个启动器的测试结果打印到终端(执行测试的分叉进程,传统上是浏览器,但在本例中为 Electron)。Testem 想要将 tty 设置为“原始模式”,以便它可以制作一个显示为实时更新的人造标签视图,并允许用户在标签之间导航以查看来自不同启动器的结果。在 testem 尝试调用(在 OS X Yosimite 上的节点 v4.0.0 上)后,我在终端中看到了这个错误:process.stdin.setRawMode
TypeError:无法读取 null 的属性“setRawMode” 在 ReadStream.setRawMode (tty.js:49:15) 在 module.exports.View.extend.setRawMode (/Users/beane/Code/yeti-desktop/node_modules/testem/lib/dev/ui/appview.js:255:21) 在 module.exports.View.extend.cleanup (/Users/beane/Code/yeti-desktop/node_modules/testem/lib/dev/ui/appview.js:265:10) 在 EventEmitter.App.cleanupView (/Users/beane/Code/yeti-desktop/node_modules/testem/lib/dev/index.js:254:15) 在 /Users/beane/Code/yeti-desktop/node_modules/testem/lib/dev/index.js:230:14 在 /Users/beane/Code/yeti-desktop/node_modules/testem/lib/dev/index.js:325:23 在 Object.HookRunner.run (/Users/beane/Code/yeti-desktop/node_modules/testem/lib/hook_runner.js:13:14) 在 EventEmitter.App.runHook (/Users/beane/Code/yeti-desktop/node_modules/testem/lib/dev/index.js:322:12) 在 EventEmitter.App.runExitHook (/Users/beane/Code/yeti-desktop/node_modules/testem/lib/dev/index.js:312:10) 在 /Users/beane/Code/yeti-desktop/node_modules/testem/lib/dev/index.js:229:12 在 /Users/beane/Code/yeti-desktop/node_modules/testem/node_modules/async/lib/async.js:52:16 在 Object.async.forEachOf.async.eachOf (/Users/beane/Code/yeti-desktop/node_modules/testem/node_modules/async/lib/async.js:236:30) 在 Object.async.forEach.async.each (/Users/beane/Code/yeti-desktop/node_modules/testem/node_modules/async/lib/async.js:209:22) 在 EventEmitter.App.cleanUpLaunchers (/Users/beane/Code/yeti-desktop/node_modules/testem/lib/dev/index.js:365:11) 在 EventEmitter.App.quit (/Users/beane/Code/yeti-desktop/node_modules/testem/lib/dev/index.js:228:10) 在 process.App.quiteGracefully (/Users/beane/Code/yeti-desktop/node_modules/testem/lib/dev/index.js:43:10)
堆栈跟踪从节点 core 的 tty.js:49开始。这是引发错误的函数:
ReadStream.prototype.setRawMode = function(flag) {
flag = !!flag;
this._handle.setRawMode(flag);
this.isRaw = flag;
};
我似乎无法弄清楚到底this._handle
是什么。Testem 不希望它为空,但由于某种原因它是空的。谁能帮我解决这个问题?