开发者问题收集

Webpack 无法解析 JS 变量提供的路径

2019-04-26
61

我正在使用 vue 和 ionic 制作一个应用程序,但是在尝试加载资产时,路径无法解析。

<template>
    <div id="index">

        <img :src="image.src" v-for="image in images">

    </div>
</template>

<script>
export default {

    name: 'Inicio',

    data() {
        return {
            images: [
                {src: '@/assets/xxx.png'},
                {src: '@/assets/xxxx.png'},
                {src: '@/assets/xxx.png'}
            ]
        }
    }
}
</script>

src 属性中的路径看起来像在 var '@/assets/xxx.png' 中输入的路径。

但如果我直接执行此操作,通过手动在图像中输入 src,如 <img src="@/assets/xxx.png"> 它可以正确加载图像。

1个回答

您无法使用 v-for 引用静态资产,因为 webpack 需要在运行时之前重写静态路径。 image.src 的值只会在运行时读取并解析到模板,因此 webpack 不会进行编译以将相对路径转换为 ​​bundle 中的真实路径。

一种解决方案是使用 require()

<template>
    <div id="index">

        <img :src="image.src" v-for="image in images">

    </div>
</template>

<script>
export default {

    name: 'Inicio',

    data() {
        return {
            images: [
                {src: require('@/assets/xxx.png') },
                {src: require('@/assets/xxxx.png') },
                {src: require('@/assets/xxx.png') }
            ]
        }
    }
}
</script>

演示沙盒: https://codesandbox.io/s/811px8kn88

blaz
2019-04-26