VUE打包图片,icon图标不显示解决方案

第一:使用element框架的icon时候,开发环境下是没有问题的,打包完以后出现小方块,页面不显示, 解决办法:找到utils.js文件,如下图,

在这里插入图片描述

function generateLoaders (loader, loaderOptions) {
    const loaders = options.usePostCSS ? [cssLoader, postcssLoader] : [cssLoader]
 
    if (loader) {
      loaders.push({
        loader: loader + '-loader',
        options: Object.assign({}, loaderOptions, {
          sourceMap: options.sourceMap
        })
      })
    }
 
    // Extract CSS when that option is specified
    // (which is the case during production build)
    if (options.extract) {
      return ExtractTextPlugin.extract({
        use: loaders,
        fallback: 'vue-style-loader',
        publicPath: '../../',//解决ele小图标出不来问题
      })
    } else {
      return ['vue-style-loader'].concat(loaders)
    }
  }

第二:打包完以后路径不对了,加载文件,图片不出来

解决办法:找到config里面的index.js,加入assetsPublicPath: ‘./’,

build: {
    // Template for index.html
    index: path.resolve(__dirname, '../dist/index.html'),
 
    // Paths
    assetsRoot: path.resolve(__dirname, '../dist'),
    assetsSubDirectory: 'static',
    assetsPublicPath: './', //解决打包完路径不对的问题

第三.调大
在这里插入图片描述
第四:阿里巴巴icon图标,加上HTTP
在这里插入图片描述
第五:data里写的图片路径,所以需要把路径换为 ‘./static/imgs/XXXX.png’

  data () {
      return {
        //审核状态
        state: '',
        roledata: [
          {name: '1', img: './static/imgs/XXX.png'},
          {name: '2', img: './static/imgs/XXX.png'},
          {name: '3', img: './static/imgs/XXX.png'},
          {name: '4', img: './static/imgs/XXX.png'},
        ]
      }
    },

以后吧路径统一写成‘./static/imgs/XXXX.png’ 本地也能访问到,打包后就不会冲突

### 解决 Vue 项目中 Element 图标在生产环境中显示的问题 当遇到 **Vue** 和 **Element-UI** 的图标在生产构建环境下无法正常加载的情况时,通常是因为字体文件未被正确打包到最终的静态资源目录中。以下是可能的原因分析及解决方案: #### 原因分析 1. 生产环境下的路径配置错误可能导致字体文件未能正确加载。 2. Webpack 配置中的 `file-loader` 或其他相关 loader 可能未正确处理 `.woff`, `.ttf`, `.eot` 等字体文件[^1]。 --- #### 解决方案 ##### 方法一:调整 Webpack 配置以支持字体文件 如果使用的是自定义 Webpack 配置,则需确保其能够正确解析并打包字体文件。可以在项目的 `webpack.config.js` 文件中添加如下规则: ```javascript module.exports = { module: { rules: [ { test: /\.(woff|woff2|eot|ttf|otf)$/, use: ['file-loader'] } ] } }; ``` 此规则会通过 `file-loader` 将字体文件复制到输出目录中。 ##### 方法二:修改 CSS 资源路径 某些情况下,CSS 中引用的字体文件路径可能是相对路径,在开发模式下可以正常工作,但在生产模式下可能会失效。可以通过设置绝对路径来解决问题。例如,编辑 `element-ui` 的样式文件或覆盖默认路径: ```css @font-face { font-family: 'element-icons'; src: url('/fonts/element-icons.eot'); /* 添加更多字体格式 */ } ``` 注意这里的 `/fonts/` 是相对于根路径的地址,应根据实际部署结构调整。 ##### 方法三:检查公共路径 (`publicPath`) 如果使用了 Vue CLI 构建工具,默认会在生产环境中生成带有子路径的公共资源链接。这可能导致字体文件的实际位置与预期符。可通过修改 `vue.config.js` 来指定正确的 `publicPath`: ```javascript module.exports = { publicPath: process.env.NODE_ENV === 'production' ? '/your-sub-path/' : '/' }; ``` 上述代码片段设置了同环境下的基础路径,从而避免路径冲突问题。 ##### 方法四:手动引入字体文件 作为最后手段,可以直接将所需的字体文件下载至本地,并显式导入它们。例如,将 `element-icons.ttf` 放入 `src/assets/fonts/` 目录下,然后在入口文件中执行以下操作: ```javascript import '@/assets/fonts/element-icons.ttf' ``` 这种方法虽然简单粗暴,但适用于快速修复场景。 --- ### 示例代码 假设已按照方法一完成 Webpack 配置更新,那么完整的组件实现可参考以下形式: ```html <template> <div class="icon-example"> <i class="el-icon-setting"></i> <!-- 正确渲染 --> </div> </template> <script> export default { name: 'IconExample', }; </script> <style scoped> .icon-example i { font-size: 24px; color: #409eff; } </style> ``` --- ###
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值