所以我遇到了两个问题。首先我使用Firebase来授权GitHub和Google登录,所以我在导航栏中将个人头像显示为个人资料图像。现在我的代码一切都运行良好,直到我将<img>
切换为<Image>
-然后我得到了这两个错误:
下面是我使用虚拟角色的片段:
import Image from 'next/image'
import { useAuth } from '@/lib/auth';
const DashboardShell = ({ children }) => {
const { user, signout } = useAuth();
return (
<Link href="/account" passHref>
<a>
<Image
src={user?.photoUrl ?? ''}
width="96"
height="96"
alt="profile avatar"
/>
</a>
</Link>
)
}
现在,当我使用img
而不是Image
时,虚拟角色显示并工作。当我切换到Image
时,我收到错误,我对user?.photoUrl
进行console.log,它显示为undefined
。所以我保留了控制台。日志并切换回img
,我注意到控制台日志在页面加载后立即显示undefined,然后立即记录URL,所以它的日志未定义和URL。
这几乎就像下一个图像尝试的加载之前,化身的网址被检索。
因此,我的问题是,是否有办法告诉next/image等待加载,直到检索/填充user?.photoUrl
为止?
同样是的,我的next.config.js
文件中列出了图像域:常量路径=需要("路径")
module.exports = {
trailingSlash: true,
sassOptions: {
includePaths: [path.join(__dirname, 'styles')]
},
images: {
domains: ['lh3.googleusercontent.com', 'avatars.githubusercontent.com'],
},
}
我在"next": "12.1.0",
上,我在Vercel上运行。
3条答案
按热度按时间w1e3prcc1#
我认为您的映像主机名问题已通过
next.config.js
中的最新配置解决修复第二个问题,即
next/image
上的undefined
图像。您可以进行单独的图像源检查lf5gs5x22#
您可以显示占位符图像,直到加载化身
vfhzx4xs3#
我在个人资料页面中添加了以下代码:
资料来源:
https://firebase.google.com/docs/auth/web/manage-users#get_a_users_profile
在我的
img
中:这是我的
next.config.js
文件: