Ich versuche, Daten von einer Website zu extrahieren und ich möchte nach 10 Minuten Schleife, um zu sehen, ob die Daten geändert haben. Ich dachte, meine Funktionen in Module zu packen ist eine gute Idee, aber jetzt bin ich dran, meine aktuelle Alptrauminstanz vom Login-Modul zum Datenmodul zu bekommen.Modularisierung Alptraum und die Albtrauminstanz
start.js
var config = require('./config.json');
var login = require('./functions/login.js');
var data = require('./functions/data.js');
var vo = require('vo');
var Nightmare = require('nightmare'),
nightmare = new Nightmare({
show: config.nightmare.show,
typeInterval: config.nightmare.typeInterval,
webPreferences: {
images: config.nightmare.images,
}
});
vo(login.login)(nightmare, function (err, result) {
if (!result) return;
console.log('Logged in as ' + config.user.username)
vo(data.getData)(nightmare, function (err, result) {
console.log(result);
})
})
login.js
var config = require('../config.json');
var Nightmare = require('nightmare')
function* login(nightmare) {
return yield nightmare
.goto('http://example.com/')
.click('.gogo').wait(2500)
.insert('.whsOnd', config.user.username)
.click('.RveJvd').wait(2500)
.insert('.whsOnd', config.user.password)
.click('.RveJvd').wait(4000)
.then(() => {
return true;
})
}
//login works
module.exports = {
login: login
}
data.js
var config = require('../config.json');
var Nightmare = require('nightmare')
function* getData(nightmare) {
console.log('Getting data ...' + nightmare)
return yield nightmare
.click('.index_menu').wait(1000)
.evaluate(()=>{
// do stuff
})
.then((result) => {
return result;
})
.catch((error) => {
console.log('Failure: ' + error)
})
}
module.exports = {
getData: getData
}
Meine bewerten Funktionen das einzige Problem arbeiten, ist, dass, obwohl Alptraum ist nicht undefinierten in data.js ist zum Beispiel der Pfad.
ich nicht über VO wusste, darüber zu lesen ein wenig es um Ihre Nutzung scheint völlig falsch ... – Salketer
Dann, wie ich tun benutze es? – jonasdero
kann ich nicht wirklich sagen ... Aber sieh dir mal die Readme an ... Erstmal benutzen sie .dann mit nur einem Callback, während du dann nicht benutzt, den Rückgabewert als Funktion direkt an, mit 2 Parameter ... Dies könnte ein Weg sein, es zu tun, ich denke einfach nicht, dass es der übliche Weg ist. – Salketer