Nginx部署Umi React前端项目标准配置

news/2025/2/8 22:07:58/

文章目录

    • 概要
    • 前端Umi项目
      • 配置文件
      • 请求后端Api
      • 打包
    • 后端项目
    • Nginx配置
      • 配置文件
    • 错误信息

概要

使用UmiJs开发的前端项目打包部署在Nginx,主要是Umi中项目的配置和Nginx的配置

前端Umi项目

基于"@umijs/max": "^4.3.24", + "react": "^18.3.1"

配置文件

./.umirc.ts

import { defineConfig } from '@umijs/max';
export default defineConfig({npmClient: 'yarn',esbuildMinifyIIFE: true,base: '/web/',publicPath: '/web/',favicons: ['/src/assets/favicon.png'],
});

注意文件中的 /web/

请求后端Api

./src/utils/util.tsx

import { request as umiRequest } from 'umi';
const request = (url: string, options?: RequestConfig) => {return umiRequest('/api' + url, {...options,});
};

注意文件中的 /api,最终的url应该是 /api/url 形式,即调用 request 方法的时候传参 url 应该是以 / 开头

打包

./package.json

{"scripts": {"build": "max build",},
}
  • > yarn build
  • > ./dist

后端项目

普通的提供Restful Api的Http服务端即可

  • > 8888
  • > 前端项目能正常访问

Nginx配置

版本:1.26.3

配置文件

./conf/nginx.conf

http {include       mime.types;default_type  application/octet-stream;server {listen       80;server_name  localhost;# 后端Api配置location /api/ {proxy_pass http://localhost:8888/;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;}# 前端项目打包后产生dist,将dist重命名为web,放置到/tmp下# 即 /tmp/web 对应下面的配置# 注意 /web /web/index.html 这些和前端打包时对应一致,否则会出现错误,在浏览器控制台查看location /web {# root /usr/local/nginx/html;root /tmp;index index.html;try_files $uri /web/index.html;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}}
}

错误信息

由于不满足以上所有配置而出现的错误信息

  • Uncaught SyntaxError: Unexpected token '<' (at preload_helper.js:1:1)Understand this errorAI
  • umi.js:1 Uncaught SyntaxError: Unexpected token '<' (at umi.js:1:1)

查看浏览器请求响应,这个对应请求JS资源的响应尽然返回的是HTML,且是 dist/index.html的内容,在页面报错需要关注 nginxerror.log 日志信息方便查错


http://www.ppmy.cn/news/1570427.html

相关文章

2.7学习总结

并查集&#xff1a; 1.查询&#xff08;采用了递归的方法&#xff09; 2.合并、 完整代码模板&#xff08;联系题目直接套模板&#xff09; 1.优化前 #include<stdio.h> #include<stdlib.h> #define MAXSIZE 100int uset[MAXSIZE];//定义一个足够长的数组 //用…

RISC-V芯片与扩展医疗影像处理边缘设备编程探析

一、引言 在数智化医疗快速发展的当下,医疗影像处理作为疾病诊断、治疗方案制定的关键环节,对设备性能与效率提出了极高要求。传统的医疗影像处理多依赖于集中式的大型计算中心,数据需传输至远程服务器进行处理,这不仅面临网络延迟、带宽限制的问题,还存在数据隐私安全风险…

前端高级面试题及其答案

以下是一些前端高级面试题及其答案&#xff1a; 一、JavaScript相关 事件循环&#xff08;Event Loop&#xff09;机制 答案&#xff1a; JavaScript的事件循环负责执行代码、收集和处理事件以及执行队列中的子任务。它包含宏任务&#xff08;macrotask&#xff09;队列&…

深度学习 Pytorch 建模可视化工具TensorBoard的安装与使用

50 TensorBoard的安装和使用 在深度学习建模过程中&#xff0c;为了能够快速绘制模型基本结构、观察模型评估指标伴随训练过程的动态变化情况&#xff0c;当然也为了能够观察图像数据&#xff0c;我们可以使用TensorBoard工具来进行Pytorch深度学习模型的可视化展示。 Tensor…

71.StackPanel黑白棋盘 WPF例子 C#例子

就是生成黑白棋盘&#xff0c;利用该控件能自动排列的功能。用一个横向的StackPanel嵌套纵向的StackPanel&#xff0c;然后在里面添加设定好长和高的矩形。 因为StackPanel是按照控件的大小展示的。所以如果不设置长和宽。就会显示不出矩形。 <StackPanel Orientation"…

力扣1022. 从根到叶的二进制数之和(二叉树的遍历思想解决)

Problem: 1022. 从根到叶的二进制数之和 文章目录 题目描述思路复杂度Code 题目描述 思路 遍历思想(利用二叉树的先序遍历) 1.在先序遍历的过程中&#xff0c;用一个变量path记录并更新其经过的路径上的值&#xff0c;当遇到根节点时再将其加到结果值res上&#xff1b; 2.该题…

pycharm配置anaconda环境时找不到python.exe解决办法

方式1&#xff1a;最新版的 先找到 anaconda 安装目录下的 condabin/conda &#xff0c;然后加载环境&#xff0c; 加载之后下面就有了conda环境&#xff0c;可以进行选择 方式2&#xff1a; 在一台新电脑上配置anaconda环境时&#xff0c;发现pycharm在设置解释器时&#x…

探索前端框架的未来:Svelte 的崛起

引言 在前端开发的世界里&#xff0c;框架更新换代的速度仿佛光速。从 jQuery 到 Angular&#xff0c;再到如今大热的 React 和 Vue&#xff0c;开发者们不断追逐更轻量、更快、更易于维护的框架。如今&#xff0c;Svelte 正悄然崛起&#xff0c;并引发了关于前端框架未来的热烈…