2
try {
  var Spooky = require("spooky");
} catch (e) {
  console.log(e);
}

var spooky = new Spooky({
  capser: {
    logLevel: "debug",
    verbose: true
  },
  child: {
    command: "./casperjs/bin/casperjs",
    port: 8081,
    spooky_lib: "./node_modules/spooky/"
  }
}, function (err) {
  if(err) {
    console.log(err);
  }
  spooky.start("http://www.google.com");
  spooky.then(function () {
    console.log("7331");
    this.emit("printmsg", "1337");
  });
  spooky.run();
});

spooky.on("printmsg", function (msg) {
  console.log(msg);
});

spooky.on("error", function (e) {
  console.error(e);
});

実行1337すると表示されますが、表示され7331ません。どうしてこれなの?私が尋ねている理由は、特定の変数の値をログに記録したいときにデバッグが難しくなるためです。

また、 then 関数を次のように変更したい場合:

spooky.then(function () {
  var self = this;
  this.evaluate(function () {
    self.emit("printmsg", "Hello World!");
  });
});

evaluateself 変数にアクセスできないため、これは機能しません。PhantomJS では作成できますがpage.evaluate(function (self) {、Spooky で試してみるとうまくいきません。そのため、必要なときにデータをログに記録することは非常に困難です。

これを回避する方法はありますか?

4

2 に答える 2