李乐 發表於 2025-1-5 10:32:00

Error occurred prerendering page "/_not-found".(Next.js 15)

<p>我们需要更新 <button type="button">UserProfile.tsx </button>组件,改用 <button type="button">Next.js </button>的 Link 组件而不是 react-router-dom 的 Link 组件。以下是解决方法:</p>
<p>这样可以确保组件更好地适应 <button type="button">Next.js </button>的框架,避免不兼容的问题。<br><br></p>
<p># 错误的代码</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">'use client'

import React from 'react'
import { Box, Avatar, Typography, IconButton, Tooltip, useTheme } from '@mui/material'
import AlbumOutlinedIcon from '@mui/icons-material/AlbumOutlined'
import { Link } from 'react-router-dom'

interface ProfileProps {
userName?: string
designation?: string
userimg?: string
isCollapse?: boolean
}

export const Profile = React.forwardRef</span><span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">HTMLDivElement</span><span style="color: rgba(255, 0, 0, 1)">, ProfileProps</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span><span style="color: rgba(0, 0, 0, 1)">(
({ userName = '', designation = '', userimg = '', isCollapse = false }, ref) =&gt; {
    const theme = useTheme()
    return (
      </span><span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">Box</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span><span style="color: rgba(0, 0, 0, 1)">
      {isCollapse ? (
          ''
      ) : (
          </span><span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">Box
            </span><span style="color: rgba(255, 0, 0, 1)">display</span><span style="color: rgba(0, 0, 255, 1)">={'flex'}
            </span><span style="color: rgba(255, 0, 0, 1)">alignItems</span><span style="color: rgba(0, 0, 255, 1)">='center'
            </span><span style="color: rgba(255, 0, 0, 1)">gap</span><span style="color: rgba(0, 0, 255, 1)">={2}
            </span><span style="color: rgba(255, 0, 0, 1)">sx</span><span style="color: rgba(0, 0, 255, 1)">={{ </span><span style="color: rgba(255, 0, 0, 1)">m: 3, p: 2, borderRadius: '8px', bgcolor: theme.palette.secondary.main + 20 }}
          </span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
            <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">Avatar </span><span style="color: rgba(255, 0, 0, 1)">alt</span><span style="color: rgba(0, 0, 255, 1)">='Remy </span><span style="color: rgba(255, 0, 0, 1)">Sharp' src</span><span style="color: rgba(0, 0, 255, 1)">={userimg} </span><span style="color: rgba(0, 0, 255, 1)">/&gt;</span>

            <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">Box</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
            <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">Typography </span><span style="color: rgba(255, 0, 0, 1)">variant</span><span style="color: rgba(0, 0, 255, 1)">='h6'</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>{userName}<span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">Typography</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
            <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">Typography </span><span style="color: rgba(255, 0, 0, 1)">variant</span><span style="color: rgba(0, 0, 255, 1)">='caption' </span><span style="color: rgba(255, 0, 0, 1)">color</span><span style="color: rgba(0, 0, 255, 1)">='textSecondary'</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span><span style="color: rgba(0, 0, 0, 1)">
                {designation}
            </span><span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">Typography</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
            <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">Box</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
            <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">Box </span><span style="color: rgba(255, 0, 0, 1)">sx</span><span style="color: rgba(0, 0, 255, 1)">={{ </span><span style="color: rgba(255, 0, 0, 1)">ml: 'auto' }}</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
            <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">Tooltip </span><span style="color: rgba(255, 0, 0, 1)">title</span><span style="color: rgba(0, 0, 255, 1)">='Logout' </span><span style="color: rgba(255, 0, 0, 1)">placement</span><span style="color: rgba(0, 0, 255, 1)">='top'</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
                <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">Link </span><span style="color: rgba(255, 0, 0, 1)">to</span><span style="color: rgba(0, 0, 255, 1)">='/'</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
                  <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">IconButton </span><span style="color: rgba(255, 0, 0, 1)">color</span><span style="color: rgba(0, 0, 255, 1)">='primary' </span><span style="color: rgba(255, 0, 0, 1)">aria-label</span><span style="color: rgba(0, 0, 255, 1)">='logout' </span><span style="color: rgba(255, 0, 0, 1)">size</span><span style="color: rgba(0, 0, 255, 1)">='small'</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
                  <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">AlbumOutlinedIcon </span><span style="color: rgba(0, 0, 255, 1)">/&gt;</span>
                  <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">IconButton</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
                <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">Link</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
            <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">Tooltip</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
            <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">Box</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
          <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">Box</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span><span style="color: rgba(0, 0, 0, 1)">
      )}
      </span><span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">Box</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span><span style="color: rgba(0, 0, 0, 1)">
    )
}
)

Profile.displayName = 'Profile'</span></pre>
</div>
<p>&nbsp;</p>
<p><br># 正确的代码</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">'use client'

import React from 'react'
import { Box, Avatar, Typography, IconButton, Tooltip, useTheme } from '@mui/material'
import AlbumOutlinedIcon from '@mui/icons-material/AlbumOutlined'
import Link from 'next/link'

interface ProfileProps {
userName?: string
designation?: string
userimg?: string
isCollapse?: boolean
}

export const Profile = React.forwardRef</span><span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">HTMLDivElement</span><span style="color: rgba(255, 0, 0, 1)">, ProfileProps</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span><span style="color: rgba(0, 0, 0, 1)">(
({ userName = '', designation = '', userimg = '', isCollapse = false }, ref) =&gt; {
    const theme = useTheme()
    return (
      </span><span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">Box</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span><span style="color: rgba(0, 0, 0, 1)">
      {isCollapse ? (
          ''
      ) : (
          </span><span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">Box
            </span><span style="color: rgba(255, 0, 0, 1)">display</span><span style="color: rgba(0, 0, 255, 1)">={'flex'}
            </span><span style="color: rgba(255, 0, 0, 1)">alignItems</span><span style="color: rgba(0, 0, 255, 1)">='center'
            </span><span style="color: rgba(255, 0, 0, 1)">gap</span><span style="color: rgba(0, 0, 255, 1)">={2}
            </span><span style="color: rgba(255, 0, 0, 1)">sx</span><span style="color: rgba(0, 0, 255, 1)">={{ </span><span style="color: rgba(255, 0, 0, 1)">m: 3, p: 2, borderRadius: '8px', bgcolor: theme.palette.secondary.main + 20 }}
          </span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
            <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">Avatar </span><span style="color: rgba(255, 0, 0, 1)">alt</span><span style="color: rgba(0, 0, 255, 1)">='Remy </span><span style="color: rgba(255, 0, 0, 1)">Sharp' src</span><span style="color: rgba(0, 0, 255, 1)">={userimg} </span><span style="color: rgba(0, 0, 255, 1)">/&gt;</span>

            <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">Box</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
            <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">Typography </span><span style="color: rgba(255, 0, 0, 1)">variant</span><span style="color: rgba(0, 0, 255, 1)">='h6'</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>{userName}<span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">Typography</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
            <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">Typography </span><span style="color: rgba(255, 0, 0, 1)">variant</span><span style="color: rgba(0, 0, 255, 1)">='caption' </span><span style="color: rgba(255, 0, 0, 1)">color</span><span style="color: rgba(0, 0, 255, 1)">='textSecondary'</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span><span style="color: rgba(0, 0, 0, 1)">
                {designation}
            </span><span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">Typography</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
            <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">Box</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
            <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">Box </span><span style="color: rgba(255, 0, 0, 1)">sx</span><span style="color: rgba(0, 0, 255, 1)">={{ </span><span style="color: rgba(255, 0, 0, 1)">ml: 'auto' }}</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
            <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">Tooltip </span><span style="color: rgba(255, 0, 0, 1)">title</span><span style="color: rgba(0, 0, 255, 1)">='Logout' </span><span style="color: rgba(255, 0, 0, 1)">placement</span><span style="color: rgba(0, 0, 255, 1)">='top'</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
                <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">Link </span><span style="color: rgba(255, 0, 0, 1)">href</span><span style="color: rgba(0, 0, 255, 1)">='/'</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
                  <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">IconButton </span><span style="color: rgba(255, 0, 0, 1)">color</span><span style="color: rgba(0, 0, 255, 1)">='primary' </span><span style="color: rgba(255, 0, 0, 1)">aria-label</span><span style="color: rgba(0, 0, 255, 1)">='logout' </span><span style="color: rgba(255, 0, 0, 1)">size</span><span style="color: rgba(0, 0, 255, 1)">='small'</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
                  <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">AlbumOutlinedIcon </span><span style="color: rgba(0, 0, 255, 1)">/&gt;</span>
                  <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">IconButton</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
                <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">Link</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
            <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">Tooltip</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
            <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">Box</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
          <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">Box</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span><span style="color: rgba(0, 0, 0, 1)">
      )}
      </span><span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">Box</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span><span style="color: rgba(0, 0, 0, 1)">
    )
}
)

Profile.displayName = 'Profile'</span></pre>
</div>
<p>&nbsp;</p>

</div>
<div id="MySignature" role="contentinfo">
    <br /><p><table><tr><td><img style="border-top-width: 0pt; border-left-width: 0pt; border-bottom-width: 0pt; border-right-width: 0pt" alt="Creative Commons License" src="http://i.creativecommons.org/l/by-nc/2.5/cn/88x31.png" /> </td><td>本作品采用 知识共享署名-非商业性使用 2.5 中国大陆许可协议进行许可。 </td></p><br><br>
来源:https://www.cnblogs.com/sekihin/p/18653162
頁: [1]
查看完整版本: Error occurred prerendering page "/_not-found".(Next.js 15)