vuetify3+vite,打包后mdi图标无法正常显示,及打包后首页白屏

1、图标无法正常显示

在这里插入图片描述

【因为我的vite.config.ts配置中使用了vite-plugin-css-injected-by-js这个插件】

为了优化我的项目,我使用了很多插件,vite-plugin-css-injected-by-js就是其中一个,项目本地运行是正常的,但是当我使用uniapp打包成app安装测试,发现图标无法正常显示,而且是针对vuetify中常使用的@mdi/font无法正常显示,我项目中还使用了@iconify/vue图标不受影响正常显示,我估计可能和图标的类型有关,因为每次测试都要打包在模拟器上安装太麻烦了,具体原因就不深究了

解决方式就是不要使用vite-plugin-css-injected-by-js

这是我有问题的的vite.config.ts文件,把vite-plugin-css-injected-by-js去掉,再打包安装图标显示就正常了

//vite.config.ts

import { defineConfig } from 'vite'
import Vue from '@vitejs/plugin-vue'
import Vuetify, { transformAssetUrls } from 'vite-plugin-vuetify'

import AutoImport from "unplugin-auto-import/vite";
import AutoComponents from 'unplugin-vue-components/vite'

// import viteCompression from 'vite-plugin-compression'//gzip压缩,过小的文件压缩会导致比不压缩还大,因为压缩的时候要写入一个映射字典,反而最后比压缩前还大了。但是这个是Byte层面的,可以忽略不计
import cssInjectedByJsPlugin from 'vite-plugin-css-injected-by-js'//合并css和js

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


export default defineConfig({
  plugins: [
    Vue({
      template: { transformAssetUrls }
    }),
    cssInjectedByJsPlugin(),//不要使用,会导致打包后图标无法正常显示
    AutoImport({
      imports: ["vue", "vue-router", "pinia"],
      dts: "src/auto-imports.d.ts"
    }),
    AutoComponents({
      dirs: [
        'src/**/components/**',
        "src/components/**",
      ],
      extensions: ['vue'],
      deep: false, //搜索子目录
      dts: "src/components.d.ts"
    }),
    Vuetify({
      autoImport: true,
      styles: { configFile: "src/styles/variables.scss" },
    }),
    // viteCompression({
    //   verbose: true,
    //   disable: false, //开启压缩(不禁用)
    //   deleteOriginFile: false, //删除源文件
    //   threshold: 10240, //压缩前最小文件大小
    //   algorithm: 'gzip', //压缩算法
    //   ext: '.gz', //文件类型
    // }),
  ],
  resolve: {
    alias: {
      "~": fileURLToPath(new URL("./", import.meta.url)),
      "@": fileURLToPath(new URL("./src", import.meta.url)),
    },
    extensions: [".js", ".json", ".jsx", ".mjs", ".ts", ".tsx", ".vue"],
  },
  base: './',//避免打包白屏
  server: {
    host: '0.0.0.0',
    // open: true,
    port: 4399,
    proxy: {}
  },
  css: {
    preprocessorOptions: {
      scss: { additionalData: '@import "@/styles/variables.scss";' },
    },
  },
  build: {
    target: 'es2020',
    cssMinify: 'esbuild',
    sourcemap: false,//提升速度
    outDir: 'results',
    assetsDir: 'assets',
    assetsInlineLimit: 4096,
    minify: 'terser',
    terserOptions: {
      compress: {
        drop_console: true,
        drop_debugger: true,
      },
    },
    chunkSizeWarningLimit: 2000,// 提高超大静态资源警告门槛
    rollupOptions: {
      output: {
        manualChunks: {
          vue: ["vue"],
        },
        chunkFileNames: 'static/js/[name]-[hash].js',
        entryFileNames: 'static/js/[name]-[hash].js',
        assetFileNames: 'static/[ext]/[name]-[hash].[ext]'
      }
    },
  },
})

2、关于打包白屏

我目前发现导致我项目白屏的两个原因

  • 配置中不添加base: './',打包后会白屏,【解决方式就是配置中添加base:'./'】,位置在上面配置文件中有
  • 我配置了manualChunks超大静态资源拆分导致致白屏,【解决方式是注意manualChunks的配置,或者可以不用配置】

manualChunks拆分资源配置导致我的项目打包后白屏,不能按照我注释掉的地方配置

rollupOptions: {
      output: {
        //这样写不会白屏
        manualChunks: {
          vue: ["vue"],
        },
        // 超大静态资源拆分,会导致白屏
        // manualChunks(id) {
        //   if (id.includes('node_modules')) {
        //     return id
        //       .toString()
        //       .split('node_modules/')[1]
        //       .split('/')[0]
        //       .toString();
        //   }
        // },
        chunkFileNames: 'static/js/[name]-[hash].js',
        entryFileNames: 'static/js/[name]-[hash].js',
        assetFileNames: 'static/[ext]/[name]-[hash].[ext]'
      }
    },
  • 8
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当你使用vue3和vite进行打包后,如果在服务器上打开页面时出现空白的情况,这可能是由于文件路径引发的404错误导致的。 初步分析,可能是你的打包文件中的资源文件(例如js和css文件)的引用路径不正确,导致服务器无法找到这些文件而出现404错误。 解决这个问题的方法之一是检查你的打包配置,确保资源文件的引用路径是正确的。你可以尝试修改vite的配置文件,特别是关于打包路径的配置,确保所有的资源文件都能被正确地加载。另外,还可以检查你的index.html文件,确保引用的资源文件路径与打包后的文件路径一致。 此外,还有一种可能是你的打包文件中存在其他问题,例如代码错误或依赖缺失,导致页面无法正确渲染。你可以使用浏览器的开发者工具控制台,查看是否有其他报错信息,以便更好地定位问题。 如果问题仍然存在,建议你查看具体的错误信息、文件路径以及打包配置,以便更好地分析和解决问题。如果需要进一步帮助,请提供更多详细的信息,例如打包配置和错误信息,以便我们更好地帮助你解决问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [vue3用vite打包上服务器后报错显示页面空白](https://blog.csdn.net/k490031/article/details/129733118)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [“Vue3+Vite打包后,白屏沉默,重启重试无果,我该如何解决?”](https://blog.csdn.net/weixin_44637104/article/details/131342307)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [浏览器显示数据库中数据的条形图柱状图 前后端分离vue.js+spring boot 计算机软件工程课程设计毕业设计 ...](https://download.csdn.net/download/Amzmks/88275824)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值