Vue3 在 history 模式下通过 vite 打包部署白屏

Vue3 在 history 模式下通过 vite 打包部署后白屏;
起因 hash 模式 url 后面跟个 # 强迫症犯了改成了 history,就此一波拉锯战开始了 ...
期间 nigix 和 router 各种反复排查尝试最终一波三折后可算是成功了 ...

Vue官方文档

具体配置可供参考如下:
先简要介绍下,当前项目打包部署不是在服务器的根目录下,所以 nigix 配置了一层 root 的指向;

一.nigix

try_files file ... uri && try_files file ... = code
try_files 即通过配置的 $url 按顺序进行目录下资源文件 index.html 的检索,返回其结果文件或文件夹,其中$uri $uri/若找不到则会进行内部重定向操作直至最后一个参数.
若文件不存在则会抛出 500 的错误异常.
root 若项目部署在服务器非根目录下,则需配置项目所在的子层级路径.

 location /marathon {
        default_type text/html;
        root  /data/servers/gateway/content/marathon; // 若部署在根目录下,可去除该项
        index  index.html;
        try_files $uri $uri/ /index.html;
}

#根目录方式如下
#location / {
#   try_files $uri $uri/ /index.html;
#}

二.打包环境 env 的 base 配置

Vue3 之后 设置 env 配置
 切记以 VITE 开头,例如 VITE_BASE_URL
不然会导致识别不到而不生效 ....
针对不同的环境配置不同的 env 即可
通过 env 动态配置 vite 和 router 便于后期的统一变更

# 开发环境
# VUE_APP_BASE_API = ''

NODE_ENV = 'development'

VITE_APP_TITLE = 'development'
VITE_APP_BASE_API = 'https://testing.imed.org.cn'
## base 设置
VITE_BASE_URL = /marathon/

#开发环境接口地址
VITE_SERVE = 'https://testing.imed.org.cn'

三.vite.config.ts

在 config 配置config 配置
文件中设置 base 项,将 base 与 env 相关联

import { fileURLToPath, URL } from "node:url";

import { defineConfig, loadEnv } from "vite";
import vue from "@vitejs/plugin-vue";
import vueJsx from "@vitejs/plugin-vue-jsx";

// https://vitejs.dev/config/
export default defineConfig(({ mode }) => {
  // 获取环境变量,通过 loadEnv 方式
  const env = loadEnv(mode, process.cwd());
  const BASE_URL = env.VITE_BASE_URL
  console.log(env);
  
  return {
    plugins: [vue(), vueJsx()],
    resolve: {
      alias: {
        "@": fileURLToPath(new URL("./src", import.meta.url)),
      },
    },
    base: BASE_URL, // 通过 loadEnv 将 env 中 VITE_BASE_URL 相关联
    server: {
      host: "0.0.0.0",
      port: 8000,
      proxy: {
        "/api": {
          // target: "http://192.168.12.108:8000", // 本机
          target: "https://testing.imed.org.cn", // 服务端接口域名(测试)
          changeOrigin: true, // //是否跨域
          // secure: true, // 是否https接口
          // ws: true, // 是否代理websockets
          // rewrite target目标地址 + '/abc',如果接口是这样的,那么不用重写
          rewrite: (path) => path.replace(/^\/api/, ""), // 路径重写,去掉 /api 前缀
        },
      },
    },
  };
});

四.vue-router

设置 history 模式并关联 base url

const router = createRouter({
  /*
  createWebHistory 模式下
  nigix 需配置反向代理 location / { try_files $uri $uri/ /index.html; }
  */
  history: createWebHistory(import.meta.env.VITE_BASE_URL),
  routes
});

五.打包

如上配置好后根据不同环境重新打包部署进行测试即可

  "scripts": {
    "dev": "vite",
    "preview": "vite preview",
    "build": "run-p type-check \"build-only {@}\" --",
    "build-test": "vite build --mode dev",
    "build-dev": "vite build --mode development", 
    "build-prod": "vite build --mode production",
    "type-check": "vue-tsc --build --force",
    "lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix --ignore-path .gitignore"
  },
  "devDependencies": {
    "@rushstack/eslint-patch": "^1.3.3",
    "@tsconfig/node18": "^18.2.2",
    "@types/node": "^18.19.5",
    "@vitejs/plugin-vue": "^4.5.2",
    "@vitejs/plugin-vue-jsx": "^3.1.0",
    "@vue/eslint-config-typescript": "^12.0.0",
    "@vue/tsconfig": "^0.5.0",
    "eslint": "^8.49.0",
    "eslint-plugin-vue": "^9.17.0",
    "npm-run-all2": "^6.1.1",
    "typescript": "~5.3.0",
    "vite": "^5.0.10",
    "vue-tsc": "^1.8.25"


以上便是此次分享的全部内容,希望能对大家有所帮助!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/334578.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【网站项目】331基于jsp的超市库存商品管理系统

🙊作者简介:多年一线开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板&#xff…

paramiko 、netmiko抛出 No existing session的解决方法。

写这篇文章,是因为我在H3C交换机上很正常的代码,可以ssh登录,但huawei交换机上失败,用CSDN上的文章关于allow_agentFalse,look_for_keysFalse 处理还是失败后,找相关的一些帖子总结的必须修改paramiko的源代码文章。 如…

Mysql:重点且常用的 SQL 标签整理

目录 1 <resultMap> 标签 2 <sql> 标签 3 <where> 标签 4 <if> 标签 5 <trim> 标签 6 <foreach> 标签 7 <set> 标签 1 <resultMap> 标签 比如以下代码&#xff1a; <resultMap type"SysCollege" id&qu…

【2024.1.19练习】B:01串的熵

B: 01串的熵&#xff08;5分&#xff09; 问题描述 对于一个长度为23333333的01串&#xff0c;如果其信息熵为11625907.5798&#xff0c;且0 出现次数比1 少&#xff0c;那么这个01 串中0出现了多少次&#xff1f; 我的代码&#xff1a; 注意调用<cmath>以便于对数运算…

Android-三方框架的源码

ARouter Arouter的整体思路是moduelA通过中间人ARouter把路由信息的存到仓库WareHouse&#xff1b;moduleB发起路由时&#xff0c;再通过中间人ARouter从仓库WareHouse取出路由信息&#xff0c;这要就实现了没有依赖的两者之间的跳转与通信。其中涉及Activity的跳转、服务prov…

2024 Move开发者大会在上海圆满落幕,第三期星航计划启动

*以下文章来源于MoveFuns &#xff0c;作者MoveFuns 至各位Mover&#xff1a; 2024 Move DevConfShanghai 圆满成功。在这次盛会上&#xff0c;我们围绕着Move生态关键的一年这一主题进行了深入的讨论和交流。 以下是本次会议的总结回顾&#xff1a; 大会盛况 本次大会在上…

大模型学习与实践笔记(九)

一、LMDeply方式部署 使用 LMDeploy 以本地对话方式部署 InternLM-Chat-7B 模型&#xff0c;生成 300 字的小故事 2.api 方式部署 运行 结果&#xff1a; 显存占用&#xff1a; 二、报错与解决方案 在使用命令&#xff0c;对lmdeploy 进行源码安装是时&#xff0c;报错 1.源…

innoDB存储引擎

1.逻辑存储结构 行数据->行->页->区->段->表空间 表空间(ibd文件)&#xff0c;一个mysql实例可以对应多个表空间&#xff0c;来存储记录&#xff0c;索引等数据。 段&#xff1a;分为数据段和索引段&#xff0c;回滚段&#xff0c;数据段就是B树的叶子节点&am…

神器yakit之web fuzzer功能

前言 yakit并不像burp一样单独设置爆破模块&#xff0c;但是yakit也是可以爆破的&#xff0c;并且更好用&#xff08;个人感觉&#xff09;。 手工测试场景中需要渗透人员对报文进行反复的发送畸形或者特定的payload进行查看服务器的反馈并以此来进行下一步的判断。 Fuzz标签便…

Gazebo的模型下载。

git clone zouxu634866/gazebo_modelshttps://gitee.com/zouxu6348660/gazebo_models.git&#xff0c;并完成路径配置。 &#xff08;本文提供了gitee下载&#xff0c;国外的Github下载较慢。&#xff09;

《WebKit 技术内幕》之四(1): 资源加载和网络栈

第四章 资源加载和网络栈 使用网络栈来下载网页和网页资源是渲染引擎工作的第一步 1.WebKit 资源加载机制 1.1 资源 网页本身就是一种资源、网页还需要依赖很多其他的资源(图片、视频) &#xff08;1&#xff09;HTML 支持的资源主要包括以下几种类型&#xff1a; HTML 页…

【并发编程系列】putIfAbsent和getOrDefault用法

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

高效火情监测,科技助力森林防火【数字地球开放平台】

数字地球开放平台-以卫星遥感为核心的空天信息服务开放平台 (geovisearth.com) 2019年3月30日&#xff0c;四川省凉山州木里县爆发了一场森林火灾&#xff0c;火点位于海拔3800米左右&#xff0c;地形险峻、坡度陡峭、谷深难以抵挡火势。在扑救的过程中&#xff0c;27名森林消防…

服务器自动拉取git代码运行脚本

# 1.场景分析 工作中常常会遇到本地编辑shell脚本或者python脚本完成后需要在服务器上运行的情况&#xff0c;每次进行拷贝费时费力。下面介绍下通过git管理器&#xff0c;实现本地与服务器代码同步的方式。选择公司搭建的gitlab为例&#xff1a; 2.gitlab配置服务器ssh密钥 …

【陈老板赠书活动 - 22期】- 人工智能(第三版)

陈老老老板&#x1f9d9;‍♂️ &#x1f46e;‍♂️本文专栏&#xff1a;赠书活动专栏&#xff08;为大家争取的福利&#xff0c;免费送书&#xff09; &#x1f934;本文简述&#xff1a;活就像海洋,只有意志坚强的人,才能到达彼岸。 &#x1f473;‍♂️上一篇文章&#xff…

shopee西班牙站选品:如何在Shopee西班牙站点上进行选品策略

在Shopee西班牙站点进行选品时&#xff0c;卖家需要考虑一系列策略&#xff0c;以确保产品符合当地市场需求并取得良好的销售业绩。以下是一些关键策略&#xff0c;卖家可以参考并应用到自己的选品过程中。 先给大家推荐一款shopee知虾数据运营工具知虾免费体验地址&#xff0…

数据中心设备与线缆数据采集神器

​前言 在数据中心机房运维管理过程中&#xff0c;开展以下工作时通常我们采用手工表格的方式&#xff0c;效率低还容易出错&#xff0c;如&#xff1a; 数据中心机柜设备与线缆规划&#xff1b; 数据中心机柜设备与线缆变更记录&#xff1b; 数据中心机柜内设备与线缆数据采…

ACL【新华三与华为的区别】

【解释】acl简单点解释就是&#xff0c;一套根据需求而设置的规则 【背景】 192.168.1.0/24 网段不允许访问 192.168.2.0/24 网段&#xff0c;要求使用基本 ACL 实现20_1 可以访问 20_6 的 TELNET 服务&#xff0c;但不能访问 FTP 服务 【操作步骤】 {易混点 }&#xff1a;1. …

小扎宣布进军AGI!Meta正在训练Llama 3,目标是60万块H100!模型仍会开源

今日&#xff0c;扎克伯格在Instagram上通过一则视频官宣&#xff0c;Meta要进军AGI了&#xff01; 扎克伯格认定Meta的长期愿景是构建通用智能&#xff0c;将其负责任地开源&#xff0c;使其广泛可用并造福全人类&#xff0c;扎克伯格还透露了以下几点信息&#xff1a; 1、将…
最新文章