Javascript NodeJS:理解模块中的变量范围
在下文中,我使用NodeJS v0.12.1尝试将外部文件读入config对象,并使用该对象提供的值执行一些测试 我原以为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
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无关。你是对的:我误读了代码。谢谢。谢谢:我完全搞砸了。对不起,谢谢你的澄清。