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

Clerk类型不匹配问题:useUser()与@clerk/types的UserResource不一致

解决Clerk UserResource类型不匹配问题

问题原因

你的@clerk/nextjs(v4.30.1)与单独安装的@clerk/types(v4.2.0)版本不兼容,导致两个包中的UserResource类型定义不一致——新版本@clerk/nextjs返回的user对象不包含旧版@clerk/types里新增的passkeys、createPasskey属性,触发类型错误。

解决方案

1. 移除单独安装的@clerk/types

@clerk/nextjs已内置匹配版本的@clerk/types,无需单独安装,直接卸载:

npm uninstall @clerk/types
# 或使用yarn
yarn remove @clerk/types

子组件的类型导入改为从@clerk/nextjs引入:

// 子组件代码
import { UserResource } from "@clerk/nextjs";

type Props = {
  user: UserResource;
};

const Form = ({ user }: Props) => {
  // ...
}

2. 强制同步版本(若必须保留@clerk/types)

如果项目确实需要单独使用@clerk/types,需确保其版本与@clerk/nextjs完全一致:

npm install @clerk/types@4.30.1
# 或使用yarn
yarn add @clerk/types@4.30.1

3. 清理依赖缓存并重新安装

缓存可能导致版本不生效,执行以下步骤:

# 删除node_modules和锁文件
rm -rf node_modules package-lock.json
# 重新安装依赖
npm install

4. 统一类型导入来源

避免混用不同包的类型,所有Clerk相关类型均从@clerk/nextjs导入,确保类型与运行时API完全匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 10:33:26