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

调用自定义useUser Hook时出现无法导入MapperKind编译错误求助

问题解答

MapperKind 含义

MapperKind 是 @graphql-tools/utils 包导出的枚举常量,用于标识 GraphQL Schema 中不同的可映射元素类型,包括对象类型、字段、参数、输入类型等,是 GraphQL Tools 生态中用于 Schema 处理、Mock 生成、结构转换等逻辑的标识类常量。

错误出现原因

该错误属于模块兼容性问题,触发原因主要有两类:

  • 项目使用的打包工具(如webpack)对 .mjs 格式的ES模块处理规则存在缺陷,@graphql-tools/mock 依赖的 @graphql-tools/utils 将 MapperKind 作为命名导出暴露,但打包工具识别 .mjs 文件时将其错误判定为 CommonJS 模块,而 CommonJS 模块仅支持读取默认导出,找不到命名导出的 MapperKind 就会抛出该错误。
  • 项目中安装的 @graphql-tools/mock 和 @graphql-tools/utils 版本不匹配,两者的导出规则不一致导致无法读取对应常量。

解决方案

  • 首先对齐依赖版本:删除项目的 node_modules 文件夹和锁文件(package-lock.json / yarn.lock / pnpm-lock.yaml),重新执行依赖安装命令即可:
# npm 环境
npm install
# yarn 环境
yarn install
# pnpm 环境
pnpm install
  • 如果你使用的是 create-react-app@4.x 等旧版本脚手架,打包工具默认对 .mjs 支持存在缺陷,若使用 react-app-rewired 自定义配置,可在 config-overrides.js 中添加如下规则:
module.exports = function override(config) {
  config.module.rules.push({
    test: /\.mjs$/,
    include: /node_modules/,
    type: "javascript/auto"
  });
  return config;
}
  • 临时降级方案:将 @graphql-tools/mock 版本降到 v8.7.0 及以下,该版本之前的导出逻辑不会触发该兼容性问题。

额外说明:你当前编写的 useUser Hook 为无返回值逻辑,后续可调整为 return data?.me 即可拿到用户数据,该问题和当前编译错误无关。

内容的提问来源于stack exchange,提问作者Hayat

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 20:15:03