0

I'm having the same problem as in the question: Vue 3 + Vite image URL becomes undefined after build

I can't deploy my project and keep images working. It just appears as undefined.

I tried the solution to set the build target to 'es2020', but it doesnt work. I tried to recreated the project and reinstall everything.

My dependencies:

  "dependencies": {
    "@headlessui/vue": "^1.5.0",
    "@heroicons/vue": "^1.0.6",
    "@vue-hero-icons/outline": "^1.7.2",
    "flowbite": "^1.4.5",
    "vue": "^3.2.25",
    "vue-virtual-scroller": "^2.0.0-alpha.1"
  },
  "devDependencies": {
    "@vitejs/plugin-vue": "^2.3.1",
    "autoprefixer": "^10.4.4",
    "postcss": "^8.4.12",
    "tailwindcss": "^3.0.24",
    "vite": "^2.9.9"
  }

My vite config file

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'

// https://vitejs.dev/config/
export default defineConfig({
  plugins: [
    vue()
  ],
  optimizeDeps: {
    esbuildOptions: {
      target: "es2020"
    }
  },
  build: {
    target: "es2020"
  }
})

My component

<template>
    <img :id="`image-${uuid}-${character}`" class="character-medal" :src="getImageUrl()">
    <div :id="`tooltip-${uuid}-${character}`" role="tooltip" class="inline-block absolute invisible z-10 py-2 px-3 text-sm font-medium text-white bg-gray-900 rounded-lg shadow-sm opacity-0 transition-opacity duration-300 tooltip dark:bg-gray-700">
        {{ character }}
        <div class="tooltip-arrow" data-popper-arrow></div>
    </div>
</template>

<script>
    export default {
        props: {
            character: {
                type: String,
                default: ''
            }
        },
        data() {
            return {
                uuid: Math.random(),
                tooltip: ''
            }
        },
        methods: {
            getImageUrl() {
                return new URL(`../assets/images/characters_medal/${this.character}.png`, import.meta.url).href
            }
        },
        mounted() {
            const targetEl = document.getElementById(`tooltip-${this.uuid}-${this.character}`);
            const triggerEl = document.getElementById(`image-${this.uuid}-${this.character}`);

            this.tooltip = new Tooltip(targetEl, triggerEl, { placement: 'bottom' });
        }
    }
</script>

npx vite build --debug

  vite:config bundled config file loaded in 37.71ms +0ms
  vite:config using resolved config: {
  vite:config   plugins: [
  vite:config     'vite:build-metadata',
  vite:config     'alias',
  vite:config     'vite:modulepreload-polyfill',
  vite:config     'vite:resolve',
  vite:config     'vite:html-inline-proxy',
  vite:config     'vite:css',
  vite:config     'vite:esbuild',
  vite:config     'vite:json',
  vite:config     'vite:wasm',
  vite:config     'vite:worker',
  vite:config     'vite:asset',
  vite:config     'vite:vue',
  vite:config     'vite:define',
  vite:config     'vite:css-post',
  vite:config     'vite:build-html',
  vite:config     'vite:worker-import-meta-url',
  vite:config     'vite:watch-package-data',
  vite:config     'commonjs',
  vite:config     'vite:data-uri',
  vite:config     'rollup-plugin-dynamic-import-variables',
  vite:config     'vite:asset-import-meta-url',
  vite:config     'vite:build-import-analysis',
  vite:config     'vite:esbuild-transpile',
  vite:config     'vite:terser',
  vite:config     'vite:reporter',
  vite:config     'vite:load-fallback'
  vite:config   ],
  vite:config   optimizeDeps: {
  vite:config     esbuildOptions: {
  vite:config       keepNames: undefined,
  vite:config       preserveSymlinks: undefined,
  vite:config       target: 'es2020'
  vite:config     }
  vite:config   },
  vite:config   build: {
  vite:config     target: 'es2020',
  vite:config     polyfillModulePreload: true,
  vite:config     outDir: 'dist',
  vite:config     assetsDir: 'assets',
  vite:config     assetsInlineLimit: 4096,
  vite:config     cssCodeSplit: true,
  vite:config     cssTarget: 'es2020',
  vite:config     sourcemap: false,
  vite:config     rollupOptions: {},
  vite:config     minify: 'esbuild',
  vite:config     terserOptions: {},
  vite:config     write: true,
  vite:config     emptyOutDir: null,
  vite:config     manifest: false,
  vite:config     lib: false,
  vite:config     ssr: false,
  vite:config     ssrManifest: false,
  vite:config     reportCompressedSize: true,
  vite:config     chunkSizeWarningLimit: 500,
  vite:config     watch: null,
  vite:config     commonjsOptions: { include: [Array], extensions: [Array] },
  vite:config     dynamicImportVarsOptions: { warnOnError: true, exclude: [Array] }
  vite:config   },
  vite:config   define: { __VUE_OPTIONS_API__: true, __VUE_PROD_DEVTOOLS__: false },
  vite:config   ssr: { external: [ 'vue', '@vue/server-renderer' ] },
  vite:config   configFile: 'C:/Users/leohi/OneDrive/Documentos/gla-weekly-rotation/vite.config.js',
  vite:config   configFileDependencies: [
  vite:config     'C:/Users/leohi/OneDrive/Documentos/gla-weekly-rotation/vite.config.js'
  vite:config   ],
  vite:config   inlineConfig: {
  vite:config     root: undefined,
  vite:config     base: undefined,
  vite:config     mode: undefined,
  vite:config     configFile: undefined,
  vite:config     logLevel: undefined,
  vite:config     clearScreen: undefined,
  vite:config     build: {}
  vite:config   },
  vite:config   root: 'C:/Users/leohi/OneDrive/Documentos/gla-weekly-rotation',
  vite:config   base: '/',
  vite:config   resolve: { dedupe: undefined, alias: [ [Object], [Object] ] },
  vite:config   publicDir: 'C:\\Users\\leohi\\OneDrive\\Documentos\\gla-weekly-rotation\\public',
  vite:config   cacheDir: 'C:\\Users\\leohi\\OneDrive\\Documentos\\gla-weekly-rotation\\node_modules\\.vite',
  vite:config   command: 'build',
  vite:config   mode: 'production',
  vite:config   isWorker: false,
  vite:config   isProduction: true,
  vite:config   server: {
  vite:config     preTransformRequests: true,
  vite:config     fs: { strict: true, allow: [Array], deny: [Array] }
  vite:config   },
  vite:config   preview: {
  vite:config     port: undefined,
  vite:config     strictPort: undefined,
  vite:config     host: undefined,
  vite:config     https: undefined,
  vite:config     open: undefined,
  vite:config     proxy: undefined,
  vite:config     cors: undefined,
  vite:config     headers: undefined
  vite:config   },
  vite:config   env: { BASE_URL: '/', MODE: 'production', DEV: false, PROD: true },
  vite:config   assetsInclude: [Function: assetsInclude],
  vite:config   logger: {
  vite:config     hasWarned: false,
  vite:config     info: [Function: info],
  vite:config     warn: [Function: warn],
  vite:config     warnOnce: [Function: warnOnce],
  vite:config     error: [Function: error],
  vite:config     clearScreen: [Function: clearScreen],
  vite:config     hasErrorLogged: [Function: hasErrorLogged]
  vite:config   },
  vite:config   packageCache: Map(0) { set: [Function (anonymous)] },
  vite:config   createResolver: [Function: createResolver],
  vite:config   worker: {
  vite:config     format: 'iife',
  vite:config     plugins: [
  vite:config       [Object], [Object], [Object],
  vite:config       [Object], [Object], [Object],
  vite:config       [Object], [Object], [Object],
  vite:config       [Object], [Object], [Object],
  vite:config       [Object], [Object], [Object],
  vite:config       [Object], [Object], [Object],
  vite:config       [Object], [Object], [Object],
  vite:config       [Object], [Object], [Object],
  vite:config       [Object]
  vite:config     ],
  vite:config     rollupOptions: {}
  vite:config   }
  vite:config } +13ms
vite v2.9.9 building for production...
✓ 62 modules transformed.
dist/assets/favicon.5e37544b.png             26.87 KiB
dist/assets/arlong.2760ac3d.png              18.93 KiB
dist/assets/bartolomeo.58541cad.png          17.95 KiB
dist/assets/basil hawkins.60282c5f.png       16.88 KiB
dist/assets/bastille.901d5f58.png            19.67 KiB
dist/assets/brook.a0320201.png               16.10 KiB
dist/assets/bellamy.50434afb.png             17.84 KiB
dist/assets/capone bege.9bdb772f.png         18.09 KiB
dist/assets/crocodile.0509e664.png           17.47 KiB
dist/assets/carrot.560b1d07.png              19.42 KiB
dist/assets/dalmatian.0ff9507f.png           22.62 KiB
dist/assets/eustass kid.e20cf94b.png         22.30 KiB
dist/assets/franky.8446990e.png              17.73 KiB
dist/assets/hina.cd03d7ba.png                18.74 KiB
dist/assets/jesus burgess.d239542a.png       18.89 KiB
dist/assets/jewelry bonney.11975374.png      18.56 KiB
dist/assets/killer.8289e977.png              19.43 KiB
dist/assets/koala.210f0ff9.png               18.04 KiB
dist/assets/leo.3f0cf474.png                 15.60 KiB
dist/assets/monkey d. luffy.69fd8117.png     15.56 KiB
dist/assets/nami.95860fae.png                16.04 KiB
dist/assets/nico robin.5a7305eb.png          16.15 KiB
dist/assets/perona.e97262a9.png              22.83 KiB
dist/assets/rebecca.75a5c359.png             17.80 KiB
dist/assets/roronoa zoro.f73348d2.png        15.09 KiB
dist/assets/ryuma.0dcaeebc.png               21.77 KiB
dist/assets/scratchmen apoo.c39ea4ce.png     19.41 KiB
dist/assets/smoker.3b179a23.png              22.59 KiB
dist/assets/tony tony chopper.1727f51f.png   17.92 KiB
dist/assets/trafalgar d. law.e74dfd8c.png    19.38 KiB
dist/assets/urouge.589714ff.png              16.43 KiB
dist/assets/usopp.c4a2e485.png               17.98 KiB
dist/assets/van augur.d0ecd6d8.png           20.97 KiB
dist/assets/vinsmoke ichiji.4660741a.png     18.18 KiB
dist/assets/vinsmoke niji.f09a7196.png       19.57 KiB
dist/assets/vinsmoke reiju.b602f44a.png      18.91 KiB
dist/assets/vinsmoke sanji.befea366.png      17.65 KiB
dist/assets/vinsmoke yonji.8b10fded.png      18.24 KiB
dist/assets/x drake.d8027ed8.png             19.39 KiB
dist/index.html                              0.65 KiB
dist/assets/index.295b693b.css               27.61 KiB / gzip: 5.50 KiB
dist/assets/index.fcd8e6db.js                192.48 KiB / gzip: 55.40 KiB

0 Answers0