gpt4 book ai didi

javascript - Node.js 导出变量

转载 作者:搜寻专家 更新时间:2023-10-31 23:29:08 25 4
gpt4 key购买 nike

我正在编写一个 Node.js 模块,我需要将变量数据从主文件传递给函数。我这样做:

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);
});
}
}

主文件中:

var lol = require('./apiwrapper.js');

lol.api_key = "example";
lol.region = "las";


lol.getChampions(function(data) {
console.log(data);
})

但是从apiwrapper.js文件来看,这两个变量的值总是“undefined”。

我该如何解决这个问题?

最佳答案

导入到其他模块的值是 module.exports。因此,您分配给 module.exports 的内容将被导出。之前分配给它的任何内容都会丢失。

module.exportsexports 之间的关系是它们最初指的是同一个对象:

var exports = module.exports = {};

因此,为它们中的任何一个分配一个属性都会改变同一个对象。但是,您正在为 module.exports 分配一个新对象,因此现在它们都引用不同的对象。

一个简单的解决方案是将新对象也分配给 exports,然后分配其他属性:

exports = module.exports = {...};
exports.region = region;

如果你想保持语句的顺序,那么你必须扩展默认的导出对象,而不是创建一个新的对象:

Object.assign(exports, { ... });

关于javascript - Node.js 导出变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27614020/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com