当前位置: 首页 > news >正文

Webpack5 环境下 Openlayers 标注(Icon) require 引入图片问题

Webpack5 环境下 Openlayers 标注(Icon) require 引入图片问题

    • 环境版本
    • Openlayers 使用 require 问题
    • Webpack5 正确配置

构建新环境的时候,偶然发现 Openlayers 使用 require 的方式加载图片(Icon)报错,开始以为是 Openlayers 版本问题,后来经过尝试,

发现是 webpack 配置问题:在 Webpack5 环境下,使用了 Webpack4 的配置方式

本文包括 环境版本、Openlayers 使用 require 问题、Webpack5 正确配置三部分


环境版本

node 版本:v16.16.0

npm 版本:8.17.0

在这里插入图片描述
webpack 版本:5.74.0

Openlayers 版本:7.2.2

谷歌版本:109.0.5414.75

在这里插入图片描述


Openlayers 使用 require 问题

本文尝试了三个主要版本:7.2.2、6.15.1、5.3.3,错误原因一致,但是提示略有不同。

1. 使用 require 加载图片代码:

const iconStyle = new Style({image: new Icon({anchor: [0.5, 46],anchorXUnits: 'fraction',anchorYUnits: 'pixels',src: require('./assets/image/cluster/mark_red.png')}),
});

2. 错误信息

7.2.2 版本 虽然报错,但是提示不明确,大概意思是 src 不能为空。

在这里插入图片描述
在这里插入图片描述

6.15.1 版本 给出了明确的错误原因,可以 查看错误详情

在这里插入图片描述
在这里插入图片描述

5.3.3 版本 给出了错误网址,但是无法访问。

在这里插入图片描述
3. 通过代码解决问题

通过 console 输出查看,发现 require 为对象,并不是 base64 字符。因此,只要获取 base64 即可。

const iconStyle = new Style({image: new Icon({anchor: [0.5, 46],anchorXUnits: 'fraction',anchorYUnits: 'pixels',src: require('./assets/image/cluster/mark_red.png').default}),
});

在这里插入图片描述
在这里插入图片描述


Webpack5 正确配置

1. 在 Webpack5 环境下使用 Webpack4 的配置

{test: /\.(png)|(jpg)|(gif)|(woff)|(svg)|(eot)|(ttf)$/,// test: /\.(png)|(jpg)|(gif)|(woff)|(eot)|(ttf)$/,use: [{loader: "url-loader",options: {limit: 50000,   //小于50K的 都打包name: "[hash:8].[name].[ext]",publicPath: "layui-src/img/",	//替换CSS引用的图片路径 可以替换成爱拍云上的路径outputPath: "layui-src/img/"		//生成之后存放的路径}}]
}

在这里插入图片描述
在这里插入图片描述
通过查看 require 输出,可以得知 require 获得的是 module 对象,需要获取 default 的 base64 字符才能正常使用。

2. Webpack5 环境下使用 Webpack5 的配置

{test: /\.(jpe?g|png|svg|gif)/i,type: 'asset',generator: {filename: 'img/[hash][ext][query]' // 局部指定输出位置},parser: {dataUrlCondition: {maxSize: 8 * 1024 // 限制于 8kb}}
}

在这里插入图片描述

在这里插入图片描述
通过查看 require 输出,可以得知 require 获得到的就是 base64 字符,直接使用即可。
在这里插入图片描述



参考博客:

webpack5 的使用(四):加载资源文件
Webpack 5 - Asset Modules
【记录1】Vue+OpenLayers 图片标注不显示问题

http://www.lryc.cn/news/4747.html

相关文章:

  • Zookeeper安装部署
  • Cow Acrobats ( 临项交换贪心 )
  • MySQL:为什么说应该优先选择普通索引,尽量避免使用唯一索引
  • Spring Cloud alibaba之Feign
  • 零信任-Google谷歌零信任介绍(3)
  • Numpy基础——人工智能基础
  • 电商仓储与配送云仓是什么?
  • 【零基础入门前端系列】—HTML介绍(一)
  • Elasticsearch索引库和文档的相关操作
  • 使用Python,Opencv检测图像,视频中的猫
  • 浅谈域名和服务器集约化管理的误区
  • 迪赛智慧数——柱状图(正负条形图):20212022人才求职最关注的因素
  • 网络安全-黑帽白帽红客与网络安全法
  • Xpath元素定位之同级节点,父节点,子节点
  • 华为OD机试 - 挑选字符串(Python)| 真题+思路+代码
  • python笔记-- “__del__”析构方法
  • 支付系统核心架构设计思路(万能通用)
  • python实现mongdb的双活
  • LeetCode-110. 平衡二叉树
  • Python蓝桥杯训练:基本数据结构 [链表]
  • 华为OD机试 - 找字符(Python)| 真题+思路+代码
  • 使用继承与派生的6大要点
  • 加一-力扣66-java高效方案
  • 记一次 .NET 某游戏网站 CPU爆高分析
  • 集群使用——资源管理和租户创建
  • 谷歌浏览器登录失败,提示【无法同步到“...@gmail.com”】
  • 75 111111
  • 分销系统逻辑
  • MySQL视图特性
  • RabbitMQ详解(二):Docker安装RabbitMQ