爱新觉罗·苟子 2022-09-15 17:59 采纳率: 25%
浏览 247
已结题

vite 生产环境动态背景图找不到,开发环境可以

vue3 + vite 动态引入图片后,本地没问题,打包后找不到图片 ,路径上会出现undefined ,开发时候是正常的
这是一个公共组件 ,具体的图片会通过 url 作为参数传递,打包后图片不显示 ,图片也没有被打包,vite的配置在下面
组件中:

<template>
    <span class="bg-title " :style="{'background-image':background}"></span>
</template>

<script lang="ts" setup>
    let proxy  = defineProps(['url']);
    let background = `url(${new URL(`../assets/title/${proxy.url}.png`, import.meta.url).href})`
</script>

打包后

<span class="bg-title" data-v-6aced22b="" data-v-86f2069b="" style="background-image: url(/assets/title/undefined);"></span>

下面是vite配置

import { defineConfig } from "vite";
import vue from "@vitejs/plugin-vue";
import AutoImport from "unplugin-auto-import/vite";
import Components from "unplugin-vue-components/vite";
import { ElementPlusResolver } from "unplugin-vue-components/resolvers";
import { resolve } from "path";
// https://vitejs.dev/config/
export default defineConfig({
  base: "./",
  server: {
    host: "localhost",
    cors: true,
    open: true, //vite项目启动时自动打开浏览器
    hmr: true, //开启热更新
  },
  plugins: [
    vue(),
    AutoImport({
      imports: ["vue", "vue-router"], // 需要自动引入api的库
      dts: resolve(__dirname, "src/auto-import.d.ts"), //可以选择auto-import.d.ts生成的位置,使用ts建议设置为'src/auto-import.d.ts' ,注意:这里配置之后会在启动之后多次编译,具体原因无法找到,可以选择注释掉,不影响使用
      resolvers: [ElementPlusResolver()],
    }),
    Components({
      resolvers: [ElementPlusResolver()],
    }),
  ],
  build: {
    outDir: 'southScreen',
    // minify:'terser',//esbuild
    terserOptions: {
      compress: {
        drop_console: true,
        drop_debugger: true,
      },
    },
    // chunkSizeWarningLimit: 1500,大文件报警阈值设置,不建议使用
    rollupOptions: {
      output: { //静态资源分类打包
        chunkFileNames: 'static/js/[name]-[hash].js',
        entryFileNames: 'static/js/[name]-[hash].js',
        assetFileNames: 'static/[ext]/[name]-[hash].[ext]',
        manualChunks(id) { //静态资源分拆打包
          if (id.includes('node_modules')) {
            return id.toString().split('node_modules/')[1].split('/')[0].toString();
          }
        }
      }
    }
  },
  resolve: {
    alias: {
      "@": resolve(__dirname, "src"),
      "@assets": resolve("src/assets"),
      "@components": resolve("src/components"),
    },
  },
  css: {
    preprocessorOptions: {
      scss: {
        additionalData: `@use "@/style.scss" as *;`,
      },
    },
  },
});


  • 写回答

3条回答 默认 最新

  • H5周 2022-09-16 09:13
    关注

    let background = url(${new URL(../assets/title/${proxy.url}.png, import.meta.url).href})
    你整个是反引号嵌套吗? 可以打印下background 的值看下

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 6月4日
  • 已采纳回答 5月27日
  • 修改了问题 9月26日
  • 修改了问题 9月19日
  • 展开全部

悬赏问题

  • ¥20 有偿:在ubuntu上安装arduino以及其常用库文件。
  • ¥15 请问用arcgis处理一些数据和图形,通常里面有一个根据点划泰森多边形的命令,直接划的弊端是只能执行一个完整的边界,但是我们有时候会用到需要在有很多边界内利用点来执行划泰森多边形的命令
  • ¥30 在wave2foam中执行setWaveField时遇到了如下的浮点异常问题,请问该如何解决呢?
  • ¥20 看图片)删除这个自动化录屏脚本就一直报错找不到脚本文件,如何解决?(相关搜索:bat文件)
  • ¥750 关于一道数论方面的问题,求解答!(关键词-数学方法)
  • ¥200 csgo2的viewmatrix值是否还有别的获取方式
  • ¥15 Stable Diffusion,用Ebsynth utility在视频选帧图重绘,第一步报错,蒙版和帧图没法生成,怎么处理啊
  • ¥15 请把下列每一行代码完整地读懂并注释出来
  • ¥15 pycharm运行main文件,显示没有conda环境
  • ¥15 寻找公式识别开发,自动识别整页文档、图像公式的软件