ReferenceError:用SpookyJS找不到variables
我尝试在SpookyJS中调用外部函数,方法与在wiki中执行相同的操作: https : //github.com/WaterfallEngineering/SpookyJS/wiki/Introduction
但是,当我尝试下面的代码,我有这个错误:
ReferenceError:找不到variables:test
try { var Spooky = require('spooky'); } catch (e) { var Spooky = require('../lib/spooky'); } var urls = ["http://www.google.fr", "http://www.yahoo.com" ]; exports.clicker = function(req, res) { console.log("FIRST: " + visitUrl + " \n\n\n END FIRST"); var visitUrl = function(urlIndex, nbClicked) { console.log("HELLO"); }; var spooky = new Spooky( { child: { // transport: 'http' }, casper: { logLevel: 'debug', verbose: true } }, function (err) { if (err) { e = new Error('Failed to initialize SpookyJS'); e.details = err; throw e; } spooky.start(urls[0]); console.log("SECOND: " + visitUrl + " \n\n\n END SECOND"); spooky.then([{ test: visitUrl }, function(){ console.log("THIRD: " + test + " \n\n\n END THIRD"); }]); spooky.run(); }); // 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); }); spooky.on('hello', function (greeting) { console.log(greeting); }); spooky.on('log', function (log) { if (log.space === 'remote') { console.log(log.message.replace(/ \- .*/, '')); } }); }
以下两个日志工作:
console.log("FIRST: " + visitUrl + " \n\n\n END FIRST"); console.log("SECOND: " + visitUrl + " \n\n\n END SECOND");
但第三个是负责的错误消息:
console.log("THIRD: " + test + " \n\n\n END THIRD");
任何build议?
我想对你的post发表评论,而不是一个很大的答案,但我没有这个名声,嗯。
灰化中不能传递函数。 如果你这样做
var x = 'HELLO' spooky.then([{ XinCasper : x }, function(){ //do something with XinCasper }])
这将工作。 如果您想传递一个对象或数组,请使用JSON.stringify并在casper作用域中重新生成。
如果您想从casper作用域访问幽灵函数,请使用事件发射器,如下所示(主要参见最后几行):
try { var Spooky = require('spooky'); } catch (e) { var Spooky = require('../lib/spooky'); } var urls = ["http://www.google.fr", "http://www.yahoo.com" ]; exports.clicker = function(req, res) { console.log("FIRST: " + visitUrl + " \n\n\n END FIRST"); var visitUrl = function(urlIndex, nbClicked) { console.log("HELLO"); }; var spooky = new Spooky( { child: { // transport: 'http' }, casper: { logLevel: 'debug', verbose: true } }, function (err) { if (err) { e = new Error('Failed to initialize SpookyJS'); e.details = err; throw e; } spooky.start(urls[0]); console.log("SECOND: " + visitUrl + " \n\n\n END SECOND"); spooky.then(function(){ //casper scope var y = 'something' this.emit('third', y) }); spooky.run(); }); spooky.on('third', function(y){ console.log('Hey, I can output ' + y + ' here.') }
最后,我成功地通过使用PhantomJS节点而不是SpookyJS来做我所需要的。
显然,你正在使用variablestest
console.log("THIRD: " + test + " \n\n\n END THIRD");
没有先申报。
var test;
也许用req
replace它。 🙂