NextJS执行npm run build后public文件夹未生成index.html致Firebase部署异常
NextJS构建后无index.html的排查方向
- 配置项变动排查
NextJS默认不会将构建生成的HTML输出到public目录,public仅用来存放开发者手动放置的静态资源(图片、字体等)。如果此前构建能生成静态HTML,说明你之前开启了静态导出配置,近期大概率是修改了next.config.js或者升级NextJS版本后配置失效:
打开next.config.js确认是否存在output: 'export'配置:
const nextConfig = { // 开启静态导出,构建后会在根目录生成out文件夹,包含所有静态HTML产物 output: 'export', } module.exports = nextConfig
如果该配置丢失,构建会生成服务端运行的Node.js产物,不会输出静态HTML文件。
路由入口文件排查
如果使用Page Router,确认pages目录下存在根路由入口index.js/tsx;如果使用App Router,确认app目录下存在根路由入口page.js/tsx,入口文件缺失会导致根路径的index.html无法生成。构建命令配置排查
打开package.json的scripts字段,确认build命令是否被修改,是否添加了非默认的构建参数,或者被替换为了自定义脚本导致跳过了静态导出流程。Firebase部署配置排查
打开项目根目录的firebase.json,确认hosting.public的配置值是否为out(NextJS静态导出产物的默认输出目录),如果被误改为public,就会出现部署时找不到index.html的问题。
内容的提问来源于stack exchange,提问作者ghaith haddad
相关产品推荐
相关产品推荐

