来自NightmareJS的我的​​http响应代码未定义

时间:2017-01-01 08:45:25

标签: javascript nightmare

嗨&欢迎来到2017年:)

我正在试用NightmareJS代替PhantomJS,到目前为止一直很好(PhantomJS对我的表现非常缓慢因此改变)

我的问题是当我尝试返回http响应标头时,该值未定义。

我查看了文档和许多示例,他们都指出了与我的代码非常相似的代码。

我正在通过将show设置为true来检查我正在打开的网站,因此我知道它们实际上已打开

任何帮助表示欢迎,欢呼。

我目前的代码如下:

var Nightmare = require('nightmare');

var nightmare = Nightmare({
    show: false,
    switches: {
        'ignore-certificate-errors': true
    },
    webPreferences:{
        images: true
    },
    //waitTimeout: 1000,
    loadTimeout: 30000 //** If we cant reach the page after nnnn millseconds, timeout
});

//** Start nightmare
var ms = Date.now(); //** Set a timer
nightmare
.cookies.clearAll()
.goto(url)
.screenshot('abc123.png')
.end()
.then(function(httpResponse){
    console.log(httpResponse.code); //** <<<< Here SHOULD be the http response code
    console.log(Date.now() - ms);
    callback(siteObject); //
})
.catch(function (error) {
    console.error('Search failed:', error);
});

1 个答案:

答案 0 :(得分:0)

由于行

而发生问题
.screenshot('abc123.png')

如果您将其删除,则httpResponse.code将返回状态代码。

我认为这可能是一个错误 - 我已经与开发人员打开了an issue,我会回复你的回复。

<强>更新

我刚收到 rosshinkley 的回复,他是nightmarejs的最大撰稿人:

  

httpResponse未定义,因为传递给.then()的参数将来自链中执行的最后一个操作(.end()除外) - 在您的情况下,{{1 (不返回任何内容)。如果您需要HTTP响应,则可以使用另一个.screenshot()拆分您的链以执行逻辑。

然后可以修复原始问题(再次归功于 rosshinkley ):

.then()