NestJS中使用Better Auth apiKey插件时auth对象无相关方法且智能提示失效的求助
大家好,我在NestJS项目里集成Better Auth的apiKey插件时碰到了棘手的问题:把插件加入配置后,auth对象完全没暴露任何和apiKey相关的方法,连原本正常的智能提示都直接崩了,插件扩展的属性、方法全看不到。
我已经按照文档要求把apiKey()放进了插件数组,但就是没效果,下面是我的配置代码和依赖信息,麻烦帮忙看看怎么解决这个问题?
auth.ts 核心配置代码
import { apiKey } from "@better-auth/api-key"; import { expo } from "@better-auth/expo"; import { typeormAdapter } from "@hedystia/better-auth-typeorm"; import { BaseUserSession } from "@thallesp/nestjs-better-auth"; import { BetterAuthOptions, betterAuth } from "better-auth"; import { admin, openAPI } from "better-auth/plugins"; import { hashPassword, verifyPassword } from "@/util/utils"; import {...} from "../auth/roles"; import { procuraAuthPlugin } from "../better-auth/plugins/procura-auth"; import { dataSource } from "../datasources/better-auth.datasource"; export const auth = betterAuth({ appName: "...", baseURL: process.env.URL, database: typeormAdapter(dataSource, { outputDir: "./src/typeorm", entitiesDir: "./src/models/better-auth", migrationsDir: "./src/migrations", }), emailAndPassword: { enabled: true, requireEmailVerification: true, sendResetPassword: async (data, request) => {}, }, emailVerification: { autoSignInAfterVerification: true, sendVerificationEmail: async (data, request) => {}, }, user: { additionalFields: { type: { type: "string", required: true } } }, session: { additionalFields: { fcmToken: { type: "string", required: false } }, }, plugins: [ apiKey(), procuraAuthPlugin(dataSource), // 自定义插件,无额外类型定义 expo(), openAPI(), admin({...}), ], });
package.json 依赖片段
{ "dependencies": { "@better-auth/core": "^1.5.4", "@better-auth/expo": "^1.5.4", "@hedystia/better-auth-typeorm": "^0.7.0", "@thallesp/nestjs-better-auth": "^2.4.0", "better-auth": "^1.5.1", // 其他依赖... }, "devDependencies": { "@better-auth/cli": "^1.4.21", // 其他开发依赖... }, "packageManager": "yarn@4.9.2" }
我已经尝试过的操作
- 反复确认
apiKey()插件正确加入了plugins数组,没有拼写或语法错误 - 重启过VSCode和TypeScript语言服务
- 执行过
yarn install --force重新安装依赖
但问题依然存在,有没有朋友遇到过类似情况,或者知道怎么修复这个类型提示失效、方法不暴露的问题?
后续摸索出的可能修复方案
经过一番折腾,我整理了几个有效的修复方向,分享给有同样问题的朋友:
统一Better Auth相关依赖版本
注意到我的better-auth主包是1.5.1,但@better-auth/core、@better-auth/expo是1.5.4,版本不一致很可能导致类型不兼容。建议把所有Better Auth生态的包统一到同一版本:yarn add better-auth@^1.5.4 @better-auth/core@^1.5.4 @better-auth/api-key@^1.5.4手动扩展Auth对象类型
如果自动类型合并失效,可以在项目根目录创建类型声明文件(比如better-auth.d.ts),手动补充apiKey的类型:import type { BetterAuth } from "better-auth"; import type { ApiKeyPlugin } from "@better-auth/api-key"; declare module "better-auth" { interface BetterAuth extends ApiKeyPlugin {} }记得在
tsconfig.json的include数组中加入这个声明文件。彻底清理TS缓存
执行以下命令清理缓存,再重启TS服务:rm -rf .tsbuildinfo yarn tsc --clearCache在VSCode中通过
Ctrl+Shift+P/Cmd+Shift+P选择「TypeScript: Restart TS Server」重启语言服务。检查第三方适配器兼容性
确认@hedystia/better-auth-typeorm的版本和当前Better Auth主版本兼容,避免适配器的类型定义覆盖了插件的扩展类型。
如果大家还有其他更有效的方法,欢迎在评论区补充!




