20

输出

    output: {
        path: config.build.assetsRoot,
        publicPath: process.env.NODE_ENV === 'production' ? 
        config.build.assetsPublicPath : config.dev.assetsPublicPath,
        filename: '[name].js'
    }

根据

  build: {
    env: require('./prod.env'),
    index: path.resolve(__dirname, '../dist/index.html'),
    assetsRoot: path.resolve(__dirname, '../dist'),
    assetsSubDirectory: 'static',
    assetsPublicPath: './',
    productionSourceMap: false,
    productionGzip: false,
    productionGzipExtensions: ['js', 'css']
  },

构建后,索引页面正常工作,css背景图像路径是这样的

background: url(./static/img/bg_certificate.c5cad1e.png) no-repeat 50%;

但是组件css背景图片路径错误,像这样

background: url(static/img/btn_my.b9186cc.png) no-repeat 50%;

看起来路径丢失了“./”,

4

4 回答 4

8

您应该在 .vue 文件中使用 webpack 提供当前文件位置的相对路径,而不是绝对路径,例如:

background: url(../../static/img/btn_my.b9186cc.png) no-repeat 50%;
于 2017-03-11T16:24:19.543 回答
6

当我尝试在 Vue 3 的组件中使用样式时,我也遇到了这个问题。我通过使用以下语法解决了这个问题。

background-image: url('~@/assets/image.png');
于 2021-09-08T12:54:20.353 回答
5

怎么设置:

build: {
  ...
  assetsSubDirectory: '',
  assetsPublicPath: '/static/',
  ...
}

所以:

background: url(/static/img/btn_my.b9186cc.png) no-repeat 50%;

一般来说,使用相对路径是一场噩梦

于 2018-05-01T09:17:20.973 回答
4
:style="{ backgroundImage: 'url(\'' + require('@/assets/bg3.jpg') + '\')' }

这将是背景图像的最佳解决方案。

于 2019-10-17T15:09:54.183 回答