Next打包部署到github page后,找不到静态资源导致样式失效的排查和解决方法

问题复现

可以看到并没有找到对应的文件。 输入826625219.github.io/SheetProjec... 后也是404

解决直接文件访问不到

GitHub Pages 默认会忽略以下划线开头的文件夹,不会读取里面的资源,在根目录中添加 .nojekyll空文件后,Pages 就能读取 _next文件夹中的资源了。

原理:

Github Pages 默认是基于 Jekyll 构建,Jekyll 是一个将纯文本转换为静态网站的工具,它构建的网站下各种目录都是特定的以下划线开头命名的文件夹,例如 _layouts、_posts ,它会忽略掉其它的以下划线开头的文件夹和文件。

.nojekyll 就是告诉 Github Pages 当前网站不是基于 Jekyll 构建的,不要忽略掉下划线开头的文件和文件夹。

可见 .nojekyll 主要就是用于 Github Pages 这种有默认规则的网站部署平台,如果是部署在自己的服务器上,可以把它删掉。

反之,如果你的网站不是 Jekyll 构建的,要部署到 Github Pages ,并且包含下划线开头的文件或文件夹,那么你就需要在根目录添加一个 .nojekyll 空文件。这样就能找到那个css文件了。

解决资源引用错误

在问题复现的控制台可以看到,错误的引用的资源路径为826625219.github.io/_next/stati...

我们进入部署分支(打包后的分支)查看

访问826625219.github.io/SheetProjec... 能成功是因为logi.html文件放在了根目录下,那么我们希望引用css资源也需要在错误的引用的资源路径的/_next之前加上/SheetProject。

如果要实现上述的目的,我们进行排查。在本地发现项目能正常运行,那么就不是我们在开发过程中路径错误导致的bug

而上线部署前有关键的一步是打包构建,在这一步里需要对next进行配置,对静态资源的访问加上前缀,参考 next.config.js: 为静态资源添加路径前缀并支持发布到 CDN | Next.js | Next.js中文网 (nextjs.cn)

js 复制代码
const nextConfig = {
....
  assetPrefix: "/SheetProject",
....
};

重新进行打包部署

等待2-5min后,打开我们部署的网页查看,成功解决问题

相关推荐
Sand(ContextGate)2 小时前
Python Agent 测试实战:测试与评估,让 Agent 像传统软件一样可交付
前端·javascript·python·microsoft·ai
码艺-Alimjan3 小时前
Tauri 网站To桌面应用实战总结
前端·javascript·vue
liangshanbo12154 小时前
请求拦截器相关面试题
java·前端·javascript
liangshanbo12154 小时前
React面试题:Hooks 为什么不能在分支和循环里面写?
前端·javascript·react.js
西红柿炖牛腩3544 小时前
GLB 转 OBJ/PLY 后体积没变?3D 模型不减面变小靠什么
前端·javascript·3d
Ai-_Man5 小时前
从聊天框到正式文档:AI导出鸭瞄准AI大模型应用的“最后一公里”
开发语言·前端·javascript·人工智能·小程序
专业程序开发源5 小时前
springboot酒店会员点餐系统22339-计算机课程设计、毕业设计
java·javascript·vue.js·spring boot·后端·php·课程设计
panxianren13 小时前
Bun 1.4 的 bun test --parallel 将 4 秒的测试套件缩短到约 1 秒
java·javascript
可乐鸡翅yeah_16 小时前
FFmpeg 生成 HLS 独立分片 independent‑segments 参数到底有什么用
javascript·ffmpeg·音视频·safari·m3u8
福兮说16 小时前
canvas 旋转图片的六个坑:四角被裁、Math.ceil 多出 1px 黑边、JPG 角发黑、翻转方向反了
前端·javascript·图像处理·canvas