• casperjs@1.1.0-beta3
  • spooky@0.2.5

を使って、スクリプトに渡したコマンドラインオプションをCasperJSのthenコールバック内で使おうとしています。他の変数はちゃんとCasperJS内から見えるのですが、undefinedな変数はどこかで消えてしまうのか、そんな変数はないよ ("Can't find variable") と言われてしまいます。

誰が勝手に消しているのでしょうか。また、どうすれば回避できるでしょうか。

Spooky = require 'spooky'

spooky = new Spooky
  child:
    command: './node_modules/casperjs/bin/casperjs'
  casper:
    logLevel: 'info'
    verbose: false
, (err) ->
  if err
    e = new Error 'Failed to initialize SpookyJS'
    e.details = err
    throw e

  spooky.on 'error', (e, stack) ->
    console.error(e)
    if (stack)
      console.log(stack)

  spooky.on 'console', (log) ->
    if (log.lastIndexOf('Unsafe JavaScript attempt', 0) == 0)
      return
    console.log(log)

  spooky.start 'http://example.com'
  spooky.then [{
    foo: 'bar'
    hello: undefined
  }, ->
    @echo foo
    @echo hello
  ]
  spooky.run()

出力:

$ coffee hello.coffee
bar
ReferenceError: Can't find variable: hello
[ { file: '', line: 5, function: '' },
  { file: '/path/to/node_modules/casperjs/modules/casper.js',
    line: 1553,
    function: 'runStep' },
  { file: '/path/to/node_modules/casperjs/modules/casper.js',
    line: 399,
    function: 'checkStep' } ]
ReferenceError: Can't find variable: hello
  /path/to:5
  /path/to/node_modules/casperjs/modules/casper.js:1553 in runStep
  /path/to/node_modules/casperjs/modules/casper.js:399 in checkStep
{ [Error: Child terminated with non-zero exit code 1] details: { code: 1, signal: null } }