非根目录部署 nextjs 项目,资源文件 404 的问题

问题描述

一般的我们见到的 nextjs 项目部署,按照官方步骤基本上没啥问题,但是今天遇到一个不是太常见的:在网站的子目录部署 nextjs 项目。

最近开发了一个浏览器插件,打算用 nextjs 做一个简单的官方主页,这样显得正式一点,结果在平平无奇的部署上出问题了。

本地开发没有问题,在部署的时候发现网站虽然可以正常打开,但是 JavaScriptcss 等资源的状态是 404.

不过,看文件属性的话,该文件在服务器上是明显存在的

只是,nextjs 生成的文件夹是 .next (这点和开发环境一致),不知道为什么在服务端请求变成了 _next

其他人的方案

网上各种搜索后,看到有人遇到了同样的问题

但是其解决方法试过后并不适用,也可能是 Nginx 的配置问题。如果有大佬懂这方面的,感谢告知

rewrite 指令的方式,我也试过,但是没有效果。

nginx 复制代码
location /lifetime/_next/static/ {
        alias /home/ubuntu/root/.next/static/;
        expires 365d;
        access_log off;
}
location /lifetime {
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_pass http://localhost:3001;
}
// 当然这里还有另一个解决办法是通过rewrite指令,修改proxy_pass后的url。

Stack Overflow 相关问题

nextjs-deploy-to-a-specific-url-path

看了下,发现别人老早也遇到了类似的问题,但是没发现比较靠谱点的解决方法。

我的笨方法

首先,如果非根目录的话,next.config.js 的这个配置是必须的

js 复制代码
const nextConfig = {
  reactStrictMode: true,
   basePath: '/sub-directory',
   assetPrefix: '/sub-directory'
}
// basePath指定项目的根路径,assetPrefix指定静态资源的路径
module.exports = nextConfig

Nginx 的配置如下:

nginx 复制代码
  location /sub-directory {
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_pass http://localhost:6666;
    }

通过 F12 发现,浏览器请求静态资源的路径是 /sub-directory/_next/static/,但是服务器上是没有 _next 文件夹的。

一个笨方法就是,新建 _next 目录,然后把 /sub-directory/.next/static/ 目录下的所有文件复制到 /sub-directory/_next/static/

写一个脚本文件即可,在 package.json 中添加一个 script 命令即可:

json 复制代码
"build": "next build  && ./copy_next.sh"

对于 nextjsNginx 还不是非常熟悉。如果您知道问题出在哪里,欢迎告知。

相关推荐
恪愚10 小时前
webRTC:流程和socket搭建信令服务器
运维·服务器·webrtc
wudl556610 小时前
Flink20 SQL 窗口函数概述
服务器·数据库·sql
毕设十刻10 小时前
基于Vue的鲜花销售系统33n62(程序 + 源码 + 数据库 + 调试部署 + 开发环境配置),配套论文文档字数达万字以上,文末可获取,系统界面展示置于文末
前端·数据库·vue.js
IT_陈寒10 小时前
Spring Boot 3.2震撼发布:5个必知的新特性让你开发效率提升50%
前端·人工智能·后端
橘色的喵10 小时前
C语言面向对象范式:Nginx模块化架构的设计分析
c语言·nginx·架构·面向对象
拾忆,想起10 小时前
Dubbo异步调用实战指南:提升微服务并发性能
java·服务器·网络协议·微服务·云原生·架构·dubbo
初遇你时动了情10 小时前
前端使用TensorFlow.js reactjs调用本地模型 实现图像、文本、音频/声音、视频相关识别
前端·javascript·tensorflow
广州华水科技10 小时前
单北斗GNSS变形监测系统安装与应用解析,提升位移监测精度
前端
J***Q29210 小时前
前端微前端框架原理,qiankun源码分析
前端·前端框架
菜鸟‍10 小时前
【前端学习】React学习【万字总结】
前端·学习·react.js