vue build static/img路径下的图片,路径错误,求大佬帮忙看看

问题描述

1.项目路径如下图
图片描述
2.sass目录下reset.scss
.footer{
background: url("/static/img/top.png") no-repeat;
}
3.npm run build
图片路径错误,调试模式下在/static前面改为./static可以加载出图片
如果将reset.scss footer改为./static/img/top.png webpack 报错提示 This relative module was not found
这里好像只能用绝对路径

图片描述

相关代码

1.buid/utils.js
if (options.extract) {

  return ExtractTextPlugin.extract({
    use: loaders,
    fallback: 'vue-style-loader',
    publicPath: '../../',
  })
}
sass配置
 scss: generateLoaders('sass').concat(
  {
    loader: 'sass-resources-loader',
    options: {
      resources: path.resolve(__dirname, '../static/sass/main.scss')
    }
  }

2.config/index.js
build: {

// Template for index.html
index: path.resolve(__dirname, '../dist/index.html'),

// Paths
assetsRoot: path.resolve(__dirname, '../dist'),
assetsSubDirectory: 'static',
assetsPublicPath: './',

}

如何将static/img图片路径build之后改为相对路径呢?

阅读 3.6k
3 个回答

修改 config/index.js

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

静态资源为什么不放在assets里呢,打包之后static和index.html,不能用引用打包后的路径来引用资源。框架结构是这样。可以试一下。能不能成我也没底 --=

写在CSS中的图片路径写相对路径即可,这样devbuild都能识别。
./static/img/top.png错误的原因是路径不对,以当前的.vue/css文件为起点,到达static文件夹路径前你需要若干个../

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题