Vite+Vue3打包后index.html出现错误的解决方案
这个问题我遇到过很多遍,每次都是间隔很长时间遇到,然后彻底忘记当初是怎么解决的了,直接原地爆炸
这次一定得记录下来
一、报错原因
先说原因,并非是什么跨域的问题,打包后如果没有跨域请求接口,理论上不会报错,我就写了几个静态页面,怎么就跨域了呢
但是跨域问题确实存在,我正确打包前后,控制台都会报跨域错误,如下

但是,它不是影响我页面不显示的原因啊
真实的原因是,路由模式有问题,应该选择hash模式,而不是history模式
二、解决方案
1.跨域问题解决
参考网上的问题记录,很多人提到,要修改打包配置文件
我上一下我的vite.config.js文件
import { fileURLToPath, URL } from "node:url";
import { defineConfig } from "vite";
import vue from "@vitejs/plugin-vue";
import vueDevTools from "vite-plugin-vue-devtools";
import legacy from "@vitejs/plugin-legacy";
import Components from "unplugin-vue-components/vite";
import { AntDesignVueResolver } from "unplugin-vue-components/resolvers";
// https://vite.dev/config/
export default defineConfig({
plugins: [
vue(),
legacy({
targets: ["defaults", "not IE 11"],
additionalLegacyPolyfills: ["regenerator-runtime/runtime"],
}),
vueDevTools(),
Components({
resolvers: [
AntDesignVueResolver({
importStyle: false, // css in js
}),
],
}),
],
base: "./",
resolve: {
alias: {
"@": fileURLToPath(new URL("./src", import.meta.url)),
},
},
});
关键点:
增加了base: "./",,目的就是配置根目录的位置
增加了以下代码块:
legacy({
targets: ["defaults", "not IE 11"],
additionalLegacyPolyfills: ["regenerator-runtime/runtime"],
}),
以及legacy的导入,import legacy from "@vitejs/plugin-legacy";
这里需要说一下,@vitejs/plugin-legacy需要单独安装,可能会和vite版本有冲突,升级或降级vite版本就行了
这一步也有人说可以不需要配置,我没去验证了
实际上,我这么配置后,再执行打包命令,问题还是没有解决
2.路由模式更改
更改路由模式
route/index.js原来的history模式:
const router = createRouter({
history: createWebHistory(import.meta.env.BASE_URL),
...
})
改为hash模式:
const router = createRouter({
history: createWebHashHistory(import.meta.env.BASE_URL),
...
})
至此,问题完美解决,当然,控制台应该还是会报跨域错误
到此这篇关于Vite+Vue3打包后index.html出现错误的解决方案的文章就介绍到这了,更多相关Vite Vue3打包后index.html出现错误内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
vue中this.$refs有值,但无法获取ref的值问题及解决
这篇文章主要介绍了vue中this.$refs有值,但无法获取ref的值问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2023-01-01
vue cli3.x打包后如何修改生成的静态资源的目录和路径
这篇文章主要介绍了vue cli3.x打包后如何修改生成的静态资源的目录和路径,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2022-04-04
解决antd 下拉框 input [defaultValue] 的值的问题
这篇文章主要介绍了解决antd 下拉框 input [defaultValue] 的值的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2020-10-10


最新评论