位置: IT常识 - 正文

新安webpack插件后编译报错compiler.plugin is not a function(webpack插件执行顺序)

编辑:rootadmin
新安webpack插件后编译报错compiler.plugin is not a function

推荐整理分享新安webpack插件后编译报错compiler.plugin is not a function(webpack插件执行顺序),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:webpack5安装,webpack常用插件和loader,webpack常用插件以及作用,webpack安装,webpack常用插件以及作用,webpack安装,webpack插件怎么写,webpack插件怎么写,内容如对您有帮助,希望把文章链接给更多的朋友!

        安装使用generate-asset-webpack-plugin时报错TypeError:compiler.plugin is not a function,网上搜索了一下大概就是webpack5与这些插件不匹配。推荐的方法几乎都是换一个适配的插件版本,但我所需要的这个插件在npm上最近更新时间是7年前💔。等不着作者适配于是决定自己改。

 先看解决办法:主要也只是webpack升级后,触发钩子的写法变了而已

        找到报错的文件,搜索“compiler.plugin”定位到问题所在,修改写法(如下),打个补丁,提交一下✔️。

原先代码:

compiler.plugin('emit', function (compilation, cb) {})

修改后:

compiler.hooks.emit.tapAsync('GenerateAssetWebpackPlugin',(compilation,callback)=>{})

 在接触到问题之前对于webpack的使用仅在于配置代理服务器 😢 ,后面就大概记录一下修改的思考过程与新get到的知识点。【以下的“类似于”仅因为自己接触知识点的前后顺序,不在于本身发布前后顺序,我猜测wabpack肯定比vue早出现😂】

🌷 看到compiler的时候还不知道这是个啥东西,怎么就调了一个plugin方法。在当前文件没搜到后就开始了百度之旅(刚开始还以为plugin是创作者自定义的)。然后就了解到webpack的Compiler与Compilation 对象,个人理解Compiler粒度更大,类似于编译器实例,生命周期类似于APP的应用周期,整个生命周期只会执行一次(惨兮兮只有一条命)。

🌷 plugin是定义在webpack原型apply上的一个方法,用于调用webpack的钩子函数(类似于vue中mounted、created这种函数,会在特定的时间段进行调用),第一个参数为钩子函数名称,第二个参数为回调函数。关于钩子的种类及定义可查看文档compiler 钩子

新安webpack插件后编译报错compiler.plugin is not a function(webpack插件执行顺序)

 🌷 但在webpack5中,plugin方法被取消了!所以报错is not a function。输出一下complier对象也会发现无这个属性【具体complier有什么属性可以看看依赖里的这个文件node_modules\webpack\lib\Compiler.js)

🌷 既然触发生命周期的方法变了,更新一下为最新版本的写法就好了。查看文档作出修改,至少问题就解决了~

 看一下源码部分,以便更好的理解(node_modules\webpack\lib\Compiler.js)在类中一开始就定义了一个不可修改的钩子函数集合hooks,所以会区分complier钩子与compilation钩子。毕竟complier和compilation是两个不同类这里new的AsyncSeriesHook 又是什么​呢?字面意思是异步串行钩子,搜一下

 所以这里输出的这些函数都是tapable中的😮,具体看文档  tapable,简单过一下定义后就看看那个插件generate-asset-webpack-plugin吧。webpack太长了关于其什么阶段调用了什么钩子就等把webpack基础概念和原理补完再看👻

generate-asset-webpack-plugin

         这个代码挺少就看完了,查看官网自定义插件。自定义插件 | webpack 中文文档 | webpack 中文文档 | webpack 中文网

🧩 一个 JavaScript 命名函数或 JavaScript 类。

🧩 在插件函数的 prototype 上定义一个 apply 方法。

🧩 指定一个绑定到 webpack 自身的事件钩子。【这里就是指定的emit钩子

🧩 处理 webpack 内部实例的特定数据。【使用fs模块处理的

🧩 功能完成后调用 webpack 提供的回调。【callback结束异步操作

        其他的还好,主要是不理解为什么不直接在插件函数原型上定义apply ,而要去调用一个自执行函数并使用 defineProperty给apply方法定义一些数据属性,是为了将apply()方法做响应式嘛?😵是的话这么做有啥好处呢?

本文链接地址:https://www.jiuchutong.com/zhishi/296079.html 转载请保留说明!

上一篇:携程网移动端首页制作(html5+css3)(携程首页)

下一篇:vue3-setup语法糖之组件传参(defineProps、defineEmits、defineExpose)(vue3setup语法糖如何定义realtive数据)

  • 华为云备份怎么恢复到手机(华为云备份怎么查看)

    华为云备份怎么恢复到手机(华为云备份怎么查看)

  • 喜马拉雅怎么录制自己的作品(喜马拉雅怎么录音赚钱)

    喜马拉雅怎么录制自己的作品(喜马拉雅怎么录音赚钱)

  • 荣耀30pro如何一键锁屏(荣耀30pro操作指南)

    荣耀30pro如何一键锁屏(荣耀30pro操作指南)

  • ipadpro129二代三代区别(ipadpro129第二代评测)

    ipadpro129二代三代区别(ipadpro129第二代评测)

  • 笔记本键盘亮着但黑屏怎么办(笔记本键盘亮着屏幕黑屏怎么办)

    笔记本键盘亮着但黑屏怎么办(笔记本键盘亮着屏幕黑屏怎么办)

  • 手机刷机解锁里面的内容还有没有(刷机解锁里面的东西还有吗)

    手机刷机解锁里面的内容还有没有(刷机解锁里面的东西还有吗)

  • 苹果xsmax电量显示百分比在哪里找(苹果xsmax电量显示颜色怎么调)

    苹果xsmax电量显示百分比在哪里找(苹果xsmax电量显示颜色怎么调)

  • 苹果手机突然不能读卡(苹果手机突然不可用怎么回事)

    苹果手机突然不能读卡(苹果手机突然不可用怎么回事)

  • 抖音喜欢的视频不见了是怎么回事(抖音喜欢的视频占内存吗?)

    抖音喜欢的视频不见了是怎么回事(抖音喜欢的视频占内存吗?)

  • 苹果x怎么设置来电话闪灯(苹果x怎么设置指纹密码锁屏)

    苹果x怎么设置来电话闪灯(苹果x怎么设置指纹密码锁屏)

  • page down在键盘哪里(page down在键盘哪个位置)

    page down在键盘哪里(page down在键盘哪个位置)

  • 信息网络主要分为(信息网络主要划分为三类)

    信息网络主要分为(信息网络主要划分为三类)

  • vivo手机mm安全中心是什么(vivo手机安全中心官网)

    vivo手机mm安全中心是什么(vivo手机安全中心官网)

  • 小米6充电是多少w(小米6充电是多少瓦)

    小米6充电是多少w(小米6充电是多少瓦)

  • cad怎样打出平方(cad怎么打出来平方米)

    cad怎样打出平方(cad怎么打出来平方米)

  • 芒果tv如何解绑手机号(芒果TV如何解绑会员)

    芒果tv如何解绑手机号(芒果TV如何解绑会员)

  • 苹果11卡槽在哪(苹果11卡槽哪个是正面)

    苹果11卡槽在哪(苹果11卡槽哪个是正面)

  • 苹果手机下载音乐在哪(苹果手机下载音乐怎么下载到本地)

    苹果手机下载音乐在哪(苹果手机下载音乐怎么下载到本地)

  • 苹果手机自带输入法怎么换行(苹果手机自带输入法)

    苹果手机自带输入法怎么换行(苹果手机自带输入法)

  • vivoy93后台键在哪

    vivoy93后台键在哪

  • 搜狗搜索如何卸载(搜狗搜索怎么卸载)

    搜狗搜索如何卸载(搜狗搜索怎么卸载)

  • 电脑桌面比例突然变大(电脑桌面比例突然变小)

    电脑桌面比例突然变大(电脑桌面比例突然变小)

  • MATLAB与图像处理的那点小事儿~(matlab用于图像处理)

    MATLAB与图像处理的那点小事儿~(matlab用于图像处理)

  • Vue3项目搭建全过程(vue3环境搭建)

    Vue3项目搭建全过程(vue3环境搭建)

  • 国际重复征税的前提条件是
  • 交了9个点的工程增值税不可以抵扣吗
  • 计提个人所得税怎么计提
  • 企业购买理财都需先交税再提现吗
  • 现金流量净额正负
  • 土地使用权契税入账会计分录
  • 包装版费怎么计入生产成本
  • 清算期间作为纳税年度
  • 社保基数申报怎么看是否成功
  • 残保金申报工资应该是实发数吗
  • 所得税申报表中的资产总额如何填
  • 产权转移书据印花税分录
  • 有什么法规依据法律规定
  • 独立核算自负盈亏和统负盈亏怎么选
  • 增值税专用发票可以开电子发票吗
  • 可供出售金融资产计入什么科目
  • 集团公司内部调动
  • 项目现金流量的构成
  • 公司买包包送员工入可以计入什么科目?
  • 营改增后小规模纳税人
  • 销售中央空调并安装账务处理
  • 印花税的计税依据含增值税吗
  • 办税员实名认证变更
  • 申报密码遗失怎么重置
  • 赎回公司发行的债券怎么做账?
  • 销售净利率怎么求
  • 租赁架子公司购车合法吗
  • 取得高新技术企业
  • 可转换公司债券可以在一定程度上解决的问题是
  • 2020年计提印花税怎么做账
  • 知识产权?
  • php面向对象实例
  • 办公大楼装修费怎么算
  • 计提税金及附加怎么算
  • 运费发票如何入账
  • 税款滞纳金和罚款
  • 存货出入库的账务处理
  • 什么情况下增长率是0
  • php读取txt文件内容
  • php pdo和mysqli
  • 应收账款与预收账款重分类表怎么做
  • php入门实例
  • 留抵税额一般记哪个科目
  • 增值税普通发票需要交税吗
  • python2打包
  • 残疾基金出什么科目
  • 物业公司都有什么
  • SQL中print、sp_helptext的限制与扩展
  • 未抵扣的进项发票,开出红字信息表,需要做进项税转出吗
  • 个体户开发票超过定额是如何交税?
  • 电子承兑汇票贴现怎么做账
  • 银行支付利率的含义是什么
  • 去年的电费能查到吗
  • sql翻译
  • 开发成本为什么放在存货里
  • 小规模纳税属于什么科目
  • 借管理费用贷应交税费个人所得税
  • 怎么去银行买承兑
  • 疫情期间水电费补贴收入申报企业所得税吗
  • 房屋租赁合同怎么写对房东有利
  • 出口发票上的汇票是什么
  • 对于财务的简单理解
  • 出口退税计算公式
  • 外卖占比总营业额怎么算
  • 如何查看winxp系统的运行内存
  • win7怎么设置快
  • r语言和python画图
  • css onclick
  • great 搬运工
  • python编程完全入门教程
  • js 严格的迭代语句
  • JavaScript电子时钟倒计时
  • javascript编程语言
  • 基于python的研究
  • jquery的点击事件怎么写
  • jquery获取指定元素
  • 企业不做审计会有什么后果?
  • 重庆市低保查询电话
  • 财务局是什么
  • 一般纳税人办理退税流程及手续
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设