2015-12-24 5 views
3

-je copier collé l'exemple sur Github:NightmareJS ne retourne rien au terminal?

app.js:

var Nightmare = require('nightmare'); 
var vo = require('vo'); 

vo(function*() { 
    var nightmare = Nightmare({ show: true }); 
    var link = yield nightmare 
    .goto('http://yahoo.com') 
    .type('input[title="Search"]', 'github nightmare') 
    .click('.searchsubmit') 
    .wait('.ac-21th') 
    .evaluate(function() { 
     return document.getElementsByClassName('ac-21th')[0].href; 
    }); 
    yield nightmare.end(); 
    return link; 
})(function (err, result) { 
    if (err) return console.log(err); 
    console.log(result); 
}); 

je l'ai fait: npm install nightmare vo

Alors node --harmony app.js mais rien: sorties

[email protected]:~/node/nightmarejs$ node --harmony app.js 
[email protected]:~/node/nightmarejs$ 

Aucune erreur messages que ce soit. Quel peut être le problème?

(je suis en V5.2.0 de nœud sur Ubuntu.)

+0

Vous cauchemar en cours d'exécution headlessly? – Ross

Répondre

1

en deux parties Réponse:

  1. Yahoo a changé une partie de leur désignation interne autour. Nightmare est (comme le temps de cette réponse) pas génial d'exclure quand les actions sur les éléments inexistants échouent, comme avec votre exemple. Le problème avec les noms de Yahoo a été signalé dans #490 et fixé dans #491. De la solution:

    var Nightmare = require('nightmare'); 
    var nightmare = Nightmare({ show: true }) 
    
    nightmare 
        .goto('http://yahoo.com') 
        .type('input[title="Search"]', 'github nightmare') 
        .click('#uh-search-button') 
        .wait('#main') 
        .evaluate(function() { 
        return document.querySelector('#main .searchCenterMiddle li a').href 
        }) 
        .end() 
        .then(function (result) { 
        console.log(result) 
        }); 
    
  2. Si vous utilisez headlessly (par exemple, sous Crouton ou sur ou avec Docker Digital Ocean), je vous encourage à jeter un oeil à #224. Cela peut également produire le comportement errant que vous voyez.