链接承诺后如何结束NightmareJs实例?

时间:2016-11-27 19:25:12

标签: javascript node.js web-scraping nightmare

我在docs中看到的示例在使用.then()之前调用.end()。 比如

nightmare
  .goto('http://yahoo.com')
  .type('form[action*="/search"] [name=p]', 'github nightmare')
  .click('form[action*="/search"] [type=submit]')
  .wait('#main')
  .evaluate(function () {
    return document.querySelector('#main .searchCenterMiddle li a').href
  })
  .end()
  .then(function (result) {
    console.log(result)
  })
  .catch(function (error) {
    console.error('Search failed:', error);
  });

但是,我试着这样做......

...
.then(function () {...})
.end()

但我得到一个错误,说明.end不存在。

我也尝试过以下内容,它不会引发错误,但会导致噩梦挂起。

...
.then(function () {...})
.then(function () {
  nightmare.end()
});

1 个答案:

答案 0 :(得分:2)

根据Github issue discussion

nightmare.end()必须从链接的.then()返回,而不是仅仅被调用。

...
.then(function () {...})
.then(function () {
  return nightmare.end();
})