2017-01-01 18 views
1

こんにちは&歓迎2017年までの:)NightmareJSから私のHTTP応答コードが定義されていません

私は(PhantomJSが故に私にとって非常にゆっくりと変更を実行している)PhantomJSの代わりにNightmareJSを試すと、これまでのところは良いのです

私の問題は、HTTP応答ヘッダーを返すときに値が定義されていないことです。

私はドキュメントと多くの例を見てきました。それらはすべて、非常に似たコードを表示しています。

私がサイト/ sのを確認しています私が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

'(abc123.pngを私はまだすべての詳細を働いていないが、あなたは.screenshotを削除する場合')それは適切なステータス応答を返す – Daniel

+0

乾杯のダニエル。 :( – TheTechy

答えて

0

問題は、ラインの起こる

.screenshot('abc123.png') 

あなたはそれを削除した場合、その後、httpResponse.codeは、ステータスコードを返します。

私はこれがバグかもしれないと信じています。私は開発者にan issueを公開しました。私は返信であなたに連絡します。

更新

私はちょうどnightmarejsに最も貢献さrosshinkleyから応答を受け取っ:.then()に渡されたパラメータは、最後からとなりますので、

httpResponseが定義されていませんチェーン内で実行されるアクション(.end()は例外) - あなたのケースでは、.screenshot()(何も返されません)。 HTTP応答が必要な場合は、別の.then()でチェーンを分割してロジックを実行することができます。

元の質問は、その後(rosshinkleyに再びクレジット)で固定することができます。

nightmare.goto(url) 
.then(function(httpResponse) { 
    if(httpResponse.code == 200) { 
    return nightmare.screenshot('abc123.png'); 
    } 
    else { 
    //error condition? 
    throw new Error('http response was not ok'); 
    } 
}) 
.then(function(){ return nightmare.end(); }) 
+0

優れたおかげで、レンダリングないスクリーンショットの小さな問題があります バージョン: 「悪夢」:「^ 2.9.0」 ノードのバージョン:6.9.1 – TheTechy

+0

私は返事を追加した@TheTechyダニエルは、私はちょうどそれを見ていた – Daniel

+0

感謝。 私は今それを試してみましたし、コードが作品である。 私は悪夢を覚えて、私の頭を調整していますがthenableあるので、ちょうど、その後に必要なすべてのデータを返すために覚えておく必要があり、その後 です お返事ありがとうございました。&Ross – TheTechy

関連する問題