javascript - Node.js 导出变量

标签 javascript node.js

我正在编写一个 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/

相关文章:

javascript - Map 在 React 中未定义

javascript - javascript中一个按钮样式中的两种字体类型

javascript - 在 localStorage 上捕获 QUOTA_EXCEEDED_ERR

javascript - 无法从 React.js 将图像发布到我的 API 路由

node.js - 出于安全目的,我们是否需要在 Mongoose 中过滤或过滤用户查询?

javascript - 如何在页面加载时使用 Javascript 发出成功的 Ajax 请求

javascript - 在使用 useEffect 钩子(Hook)的 react 功能组件中,元素未通过 .map() 显示

javascript - 如何从 Node 计划中获取列表?

node.js - Promise Catch 在 json rpc 调用中未收到错误

javascript Highcharts JSON 数据到 HTML 表格