mdv*_*mdv 3 javascript node.js
我正在编写一个nodejs模块,我需要将主文件中的变量数据传递给函数,我这样做:
var region;
var api_key;
exports.region = region;
exports.api_key = api_key;
module.exports = {
getSummonerId: function(sum, callback) {
var summoners = {};
var summoner = sum.replace(/\s+/g, '');
request("https://na.api.pvp.net/api/lol/"+region+"/v1.4/summoner/by-name/"+summoner+"?api_key="+api_key, function(error, response, body) {
summoners[summoner] = JSON.parse(body);
callback(summoners[summoner][summoner].id);
});
}
}
Run Code Online (Sandbox Code Playgroud)
并在主文件中:
var lol = require('./apiwrapper.js');
lol.api_key = "example";
lol.region = "las";
lol.getChampions(function(data) {
console.log(data);
})
Run Code Online (Sandbox Code Playgroud)
但是从apiwrapper.js那两个变量值总是" 未定义 ".
有人能指出我正确的方向吗?
提前致谢.
Fel*_*ing 11
导入到其他模块的值是module.exports.因此,您分配的内容将module.exports被导出.无论之前分配给它的是什么都丢失了.
module.exports和之间的关系exports是它们最初引用同一个对象:
var exports = module.exports = {};
Run Code Online (Sandbox Code Playgroud)
因此,为其中任何一个分配属性都会改变同一个对象.但是,您要分配一个新对象module.exports,因此现在它们都引用了不同的对象.
一个简单的解决方案是同时分配新对象exports,然后分配其他属性:
exports = module.exports = {...};
exports.region = region;
Run Code Online (Sandbox Code Playgroud)
如果要保持语句的顺序,则必须扩展默认的导出对象,而不是创建新的对象:
Object.assign(exports, { ... });
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20774 次 |
| 最近记录: |