2

当我运行以下代码时,我得到以下信息:

TypeError:'undefined' 不是函数(评估 'this.emit('error', error)')

我之前问过这个,但我改写了。似乎 JSON 对象在 casper 函数中未定义。

如果我在外面做 JSON.parse() ,那么它不是未定义的。

关于如何使它工作的想法?

var casper = require("casper").create({
    verbose: true,
    logLevel: 'debug',
});

var site = 'http://my.internalsite.com';

casper.start(site);

casper.run(function() {
    var currentURL = this.getCurrentUrl();
    this.echo('URL: ' + currentURL);
    var json_string = JSON.parse(this.getPageContent());
    this.echo(json_string);
    this.exit();            
});
4

1 回答 1

4

这可能是由于this.exit()之前被调用JSON.parse(this.getPageContent())

您可以尝试以下方法:

var casper = require("casper").create({
    verbose: true,
    logLevel: 'debug',
});

var site = 'http://xkcd.com/info.0.json';

casper.start(site);

casper.then(function() {
    var currentURL = this.getCurrentUrl();
    this.echo('URL: ' + currentURL);
    var json_string = JSON.parse(this.getPageContent());
    require('utils').dump(json_string);
});

casper.run();
于 2013-10-03T22:02:41.283 回答