嗨&欢迎来到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);
});
答案 0 :(得分:0)
由于行
而发生问题.screenshot('abc123.png')
如果您将其删除,则httpResponse.code
将返回状态代码。
我认为这可能是一个错误 - 我已经与开发人员打开了an issue,我会回复你的回复。
<强>更新强>
我刚收到 rosshinkley 的回复,他是nightmarejs的最大撰稿人:
httpResponse
未定义,因为传递给.then()
的参数将来自链中执行的最后一个操作(.end()
除外) - 在您的情况下,{{1 (不返回任何内容)。如果您需要HTTP响应,则可以使用另一个.screenshot()
拆分您的链以执行逻辑。
然后可以修复原始问题(再次归功于 rosshinkley ):
.then()