0
私はウェブサイトからデータを抽出しようとしています。データが変更されたかどうかを確認するために10分後にループしたいと思います。私はモジュールで自分の関数を詰め込むことは良い考えだと思っていましたが、今はログインモジュールからデータモジュールへの私の現在の悪夢のインスタンスを手に入れました。悪夢をモジュール化して悪夢のインスタンスを渡す
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
}
私は関数は、唯一の問題をされた作業悪夢イマイチundefindedもかかわらことをされている評価しますdata.jsには、例えばパスがあります。
を... – Salketer
その後、私はどのように行いますこれを使って? – jonasdero
実際に言うことはできません...しかし、ちょうどreadmeを見て...最初のことは、コールバックだけで使用して、あなたが使用していない間に戻り値を関数として直接呼び出すことです2つのパラメータ...これはそれを行う方法かもしれない、私はちょうどそれが通常の方法だとは思わない。 – Salketer