sass中的Vue公共文件夹图像

csga3l58  于 2022-12-23  发布在  Vue.js
关注(0)|答案(2)|浏览(110)

在我的Vue-CLI项目中,所有映像都位于public/media文件夹中。
在Vue文件中,我可以引用路径为/media/image.png的公共文件夹图像
当我试图在我的地盘设置背景

background-image: url('/media/image.png');

它抛出以下错误:

Module not found: Error: Can't resolve '/media/image.png' in 'myPath/src'

看起来默认情况下sass正在/src文件夹中查找图像。
是否有办法使用/public文件夹中的图像?

fcg9iug3

fcg9iug31#

尝试使用

background-image: url('~@/media/image.png');

这里的关键是使用~@作为前缀。以~为前缀的URL被视为模块请求。

r7xajy2e

r7xajy2e2#

此消息似乎是由css-loader引起的
CSS加载器具有“URL”选项,该选项可以被设置为假以防止其解析路径。
如果设置为false,css-loader将不解析url或image-set中指定的任何路径
在vue.config.js中,您可以按如下方式进行配置:

module.exports = {
  ...
  css: {
    loaderOptions: {
      css: {
        url: false;
      }
    }
  }
  ...
}

请注意,盲目使用url: false可能会阻止您的项目在构建工件中包含一些静态资产,如字体。如果这对您来说是个问题,您应该传递一个回调函数,并且您不能以不同的方式导入其他资产。
重新考虑如何导入静态资产(如图像)可能是值得的,例如,将它们作为项目的一部分包含在src/assets目录中,这样它们(默认情况下)就被复制到dist(或您可能已更改名称的任何内容)目录中以进行部署。

相关问题