Javascript NodeJS:理解模块中的变量范围

Javascript NodeJS:理解模块中的变量范围,javascript,node.js,module,Javascript,Node.js,Module,在下文中,我使用NodeJS v0.12.1尝试将外部文件读入config对象,并使用该对象提供的值执行一些测试 我原以为config将在before函数的范围内,但我得到了错误ReferenceError:config未定义before函数的第一行。为什么不能在之前的中访问config module.exports = { config : require('../../testconfig.json'), before

在下文中,我使用NodeJS v0.12.1尝试将外部文件读入config对象,并使用该对象提供的值执行一些测试

我原以为
config
将在
before
函数的范围内,但我得到了错误
ReferenceError:config未定义
before
函数的第一行。为什么不能在
之前的
中访问
config

module.exports = {
  config                  : require('../../testconfig.json'),
  before                  : function (browser) {
    pass = config.pass;
    siteroot = config.local.address + config.local.subdir;
  },
  after                   : function (browser) {
    //we'll come up with something later....
  },
  'Testing the Login page': function (browser) {
    var greeting = 'Welcome, ' + user + '!';
    browser
        .url(siteroot)
        .waitForElementVisible('body', 1000)
        .setValue('input[id=UserNameEdit]', user)
        .setValue('input[id=PasswordEdit]', pass)
        .click('#LoginBtn')
        .pause(1000)
        .assert.containsText('#usergreeting', greeting)
  }
};

这不是范围问题

config
不是变量。它是对象的一个属性(或者在对象文本完成求值后将是)


您需要访问
this.config

您将其定义为module.exports的属性,它不在变量范围内。简化示例:
var foo={bar:42,baz:function(){}
bar
不会神奇地成为
foo.baz
中的变量。这就是JS的工作原理,与Node无关。你是对的:我误读了代码。谢谢。谢谢:我完全搞砸了。对不起,谢谢你的澄清。