javascript TypeError:BrawlStarsAPI不是构造函数

2ledvvac  于 9个月前  发布在  Java
关注(0)|答案(1)|浏览(117)

我发现了这个与Brawl Stars API通信的npm模块,我试图在我的代码中实现它,但它不工作,所以我想尝试文档中的代码,但它也不工作。
我尝试了文档中的这段代码(显然我用一些文本替换了我的API密钥),但我仍然无法让它工作。

const BrawlStarsAPI = require("brawlstars-api-nodejs");

const client = new BrawlStarsAPI(token);

async function main() {
    const player = await client.player("#2JU9PRVUV");
    console.log(player.name);
}

main();

字符串
错误是:
TypeError:BrawlStarsAPI不是构造函数

xkrw2x1b

xkrw2x1b1#

我知道了
console.log(BrawlStarsAPI)require之后产生以下输出:

{
  BattleLog: [class BattleLog extends BattleLog],
  Club: [class Club extends Club],
  ClubRanking: [class ClubRanking extends ClubRanking],
  Player: [class Player extends Player],
  PlayerRanking: [class PlayerRanking extends PlayerRanking],
  Client: [class Client extends Client],
  API: [class API extends API],
  default: {
    client: [class Client extends Client],
    api: [class API extends API]
  }
}

字符串
require返回一个对象,而不是一个类。

  • 短期解决方案 *

要么

const BrawlStarsAPI = require("brawlstars-api-nodejs").API; // or
const BrawlStarsAPI = require("brawlstars-api-nodejs").default.api;


通过添加对象属性名称来正确检索类API以供使用。虽然这似乎对安装在您机器上的包文件有效,但它是否是最终配置值得怀疑。
为什么
安装的软件包与Github master branch上的文档不匹配(NPM上提供的链接)-可能正在更新以使用import而不是require

报告

如果您选择跟踪主package.json文件,则该文件将包含以下条目:

"bugs": {
    "url": "https://github.com/awekrx/BrawlStarsAPI/issues"
},

方法

1.根据文档示例,它不起作用
1.对require的调用没有出错,那么它返回了什么而不是一个类对象呢?
1.控制台记录返回值以检查它。
1.哦,它是一个具有APIdefault.api属性的对象。
1.测试这两个属性中的一个或两个是允许您检索客户端的API。
1.是的,它们是相等的(实际上.API.default.api是严格相等的)

问题

鉴于node中JavaScript模块的require返回其默认导出,require返回的对象可能是一个模块导出。然而,在GitHub上检查package.json并没有显示任何.mjs文件,也没有显示其他模块化脚本使用的迹象(对我来说)。

结论

文档与包文件不一致。也许作者此时正在更新主分支,还没有更新文档。我只是不知道,但在查看包文件时确实看到了issues链接。

const BrawlStarsAPI = require("brawlstars-api-nodejs").API;


可能是一个长期的解决方案,如果包代码是正确的工作,唯一的问题是,文档尚未更新。

相关问题