【发布时间】:2022-02-12 07:00:44
【问题描述】:
我正在尝试呈现一个允许我拥有登录功能的按钮。我正在使用 Typescript 和 NextAuth。我添加了一个用于验证类型的文件以尝试解决问题,但由于某种原因,我无法在此处使用 Object 和这些映射参数。
在这种情况下,我将provider 类型设置为any。代码编辑器中没有错误,但在 DOM 上,类型错误仍然存在。
import { getProviders, signIn } from 'next-auth/react'
function Login({ providers }) {
return (
<div>
<img className='w-52 mb-5' src="https://links.papareact.com/9xl" alt="Spotify logo at sign-in" />
{Object.values(providers).map((provider:any) => (
<div key={provider.name}>
<button>Login with {provider.name}</button>
</div>
))}
</div>
);
}
export default Login;
export async function getServerSideProps() {
const providers = await getProviders();
return {
props: {
providers,
},
};
}
在这种情况下,我删除了provider 的类型,代码编辑器为provider.name 生成了一个错误,指出“类型'未知' 上不存在属性'名称'。”
import { getProviders, signIn } from 'next-auth/react'
function Login({ providers }) {
return (
<div>
<img className='w-52 mb-5' src="https://links.papareact.com/9xl" alt="Spotify logo at sign-in" />
{Object.values(providers).map((provider) => (
<div key={provider.name}>
<button>Login with {provider.name}</button>
</div>
))}
</div>
);
}
export default Login;
export async function getServerSideProps() {
const providers = await getProviders();
return {
props: {
providers,
},
};
}
这是我的打字文件:
export interface Providers {
provider: string;
name: string;
_id: string;
}
我尝试了一些方法来尝试解决错误。我是 Typescript 的新手,这是我第一次使用 NextAuth,因此我们将不胜感激!
谢谢!
【问题讨论】:
-
getProviders()是否返回了预期的providers对象?
标签: typescript object next.js typescript-typings next-auth