gpt4 book ai didi

javascript - SpookyJS:Console.log 在里面不起作用

转载 作者:搜寻专家 更新时间:2023-11-01 00:33:13 25 4
gpt4 key购买 nike

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);
});

运行时会显示13377331则不会。为什么是这样?我问的原因是因为当您想记录某些变量的值时很难调试。

此外,如果您想像这样更改 then 函数:

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

这行不通,因为 evaluate 无法访问 self 变量。在 PhantomJS 中你可以让它成为 page.evaluate(function (self) { 但是当我用 Spooky 尝试它时它不起作用。所以当你想要记录数据时非常困难。

有解决办法吗?

最佳答案

自发布此问题以来,我已经找到导致我出现此问题的原因,因此我将在下面分享答案,以防其他人遇到类似问题:

the SpookyJS Github page 上的标准快速入门示例中,在 Spooky 中有一个注释掉的“控制台”事件监听器,当取消注释时,将导致 Casper 的所有输出出现在屏幕上:

// Uncomment this block to see all of the things Casper has to say.
// There are a lot.
// He has opinions.
spooky.on('console', function (line) {
console.log(line);
});

设置此事件监听器后,它会将 Casper 的所有输出记录到屏幕上。在我的问题中,我尝试登录到控制台的示例都在 Spooky 传递给 Casper 进行处理的调用中运行,所以这就是我没有看到它们显示的原因。设置此事件监听器后,将显示我的输出,以及 xShirase 的答案中 __utils__.echo 函数调用使用的输出。

此外,Casper 提供了一个 echo 函数,可用于将输出发送到 Casper 的评估函数之外,默认情况下,该函数只能访问正在查看的页面的范围:

spooky.then(function () {
this.echo("foo");
});

由于标准配置将Casper的日志记录级别设置为debug并设置了verbose logging on,所以一旦设置了这个事件监听器就会显示很多信息。这可以通过将日志记录级别设置为 error 或其他一些 logging level supported by Casper 来避免。 .

关于javascript - SpookyJS:Console.log 在里面不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19958689/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com