You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vite+Vue3+Electron打包后动态拼接静态资源路径异常

Vite+Vue3+Electron打包后动态拼接静态资源路径异常问题

问题情况

打包后静态资源路径指向异常:静态写死的资源路径正常,动态拼接的路径会指向错误位置。

示例代码

<script setup lang="ts">
import { ref } from "vue";

const filename = ref("vite.svg"); // 实际从后端读取文件名
</script>

<template>
  <img :src="'/'+filename" class="logo" alt="Vite logo" />
  <img src="/vite.svg" class="logo" alt="Vite logo" />
</template>

路径差异

  • 动态拼接路径(错误):file:///G:/vite.svg
  • 静态写死路径(正确):file:///G:/vite-electron/release/win-unpacked/resources/app.asar/dist/vite.svg

CSS字体资源的同类问题

@font-face {
  font-family: HanYiQiHei;
  src: url('/fonts/HanYiQiHei.ttf');
}

当前vite.config.ts配置

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import electron from 'vite-plugin-electron'
import { fileURLToPath, URL } from 'node:url'

export default defineConfig({
  plugins: [vue(), electron({
    entry: 'electron/main.ts',
  })],
  build: {
    assetsInlineLimit: 0,
  },
})

解决方案

1. 动态资源路径修正

使用Vite内置的import.meta.env.BASE_URL拼接动态路径,该变量会在打包时自动替换为正确的资源基础路径:

<template>
  <img :src="`${import.meta.env.BASE_URL}${filename}`" class="logo" alt="Vite logo" />
</template>

2. CSS字体资源路径修正

将绝对路径改为相对路径,或配置Vite的base参数统一处理资源路径:

方式一:修改CSS路径为相对路径

@font-face {
  font-family: HanYiQiHei;
  src: url('./fonts/HanYiQiHei.ttf');
}

方式二:配置Vite的base参数

在vite.config.ts中添加base配置,将资源路径设为相对路径:

export default defineConfig({
  base: './', // 关键配置:设置为相对路径
  plugins: [vue(), electron({
    entry: 'electron/main.ts',
  })],
  build: {
    assetsInlineLimit: 0,
  },
})

配置base: './'后,Vite会自动将所有静态资源路径处理为相对路径,无论静态写死还是动态拼接,都能正确指向打包后app.asar内的dist目录。

内容的提问来源于stack exchange,提问作者oyal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 18:57:49