You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何正确调用另一个函数返回对象中的嵌套函数?

解决TypeError: adminSdk.InsertGameAuthRefreshTokens is not a function问题

错误信息

TypeError: adminSdk.InsertGameAuthRefreshTokens is not a function
    at insertGameAuthRefreshTokens (D:\Projects\CHRIS\vsm-nft-fe\.next\server\pages\api\gameAuthCallback.js:1496:20)
    at handler (D:\Projects\CHRIS\vsm-nft-fe\.next\server\pages\api\gameAuthCallback.js:1434:26)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:95:5)
    at async Object.apiResolver (D:\Projects\CHRIS\vsm-nft-fe\node_modules\next\dist\server\api-utils.js:114:13)
    at async DevServer.handleApiRequest (D:\Projects\CHRIS\vsm-nft-fe\node_modules\next\dist\server\next-server.js:763:9)
    at async Object.fn (D:\Projects\CHRIS\vsm-nft-fe\node_modules\next\dist\server\next-server.js:654:37)
    at async Router.execute (D:\Projects\CHRIS\vsm-nft-fe\node_modules\next\dist\server\router.js:206:32)
    at async DevServer.run (D:\Projects\CHRIS\vsm-nft-fe\node_modules\next\dist\server\next-server.js:831:29)
    at async DevServer.handleRequest (D:\Projects\CHRIS\vsm-nft-fe\node_modules\next\dist\server\next-server.js:295:20)

问题代码

目标函数所在代码(HasuraAdapter内部)

const adminSdk = getAdminSdk({
  endpoint,
  adminSecret,
})

return {
  async funcName(data) {
    const { graphql_mutation_name: response } = adminSdk.generatedFuncName({ data })

    return {
      userId: response.user_id,
    }
  },
}

(注:实际代码中funcName对应insertGameAuthRefreshTokens,generatedFuncName对应InsertGameAuthRefreshTokens)

调用代码

const sdk = HasuraAdapter(args)
const { funcName} = sdk
const response = await funcName(data)
console.log(response)

正确访问及问题排查

你的调用方式本身是正确的——通过HasuraAdapter获取返回对象,解构出目标函数并调用的逻辑没问题。报错的核心是adminSdk里的InsertGameAuthRefreshTokens不存在,按以下步骤排查修复:

  • 确认SDK生成的方法名
    Hasura自动生成的SDK方法名通常是小驼峰格式(比如insertGameAuthRefreshTokens而非InsertGameAuthRefreshTokens),检查是否是大小写或拼写错误。可以在HasuraAdapter内部打印adminSdk的结构,确认实际存在的方法:

    const adminSdk = getAdminSdk({ endpoint, adminSecret })
    console.log(Object.keys(adminSdk)) // 打印所有可用方法名
    
  • 验证getAdminSdk的参数有效性
    如果传入的endpoint或adminSecret不正确(比如地址错误、密钥无效),生成的adminSdk可能不包含预期的mutation方法。检查这两个参数是否和Hasura控制台配置一致。

  • 确认Hasura元数据中存在对应Mutation
    登录Hasura控制台,检查是否已经创建了对应的业务mutation操作,且该mutation已被正确生成到SDK中。如果mutation不存在,需要先创建并重新生成SDK。

  • 确保SDK是最新版本
    如果Hasura元数据有更新,需要重新生成SDK文件,避免使用旧版本的SDK导致方法缺失。

内容的提问来源于stack exchange,提问作者Ahirwe Mugisha Tresor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 14:50:33