3

我正在尝试为测试运行器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 不希望它为空,但由于某种原因它是空的。谁能帮我解决这个问题?

4

0 回答 0