位置: 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数据)

  • 腾讯微视可以直播吗(腾讯微视可以直播电影吗)

    腾讯微视可以直播吗(腾讯微视可以直播电影吗)

  • 红米k20pro下巴宽度(k20pro下巴是几毫米)

    红米k20pro下巴宽度(k20pro下巴是几毫米)

  • 电脑激活了还能退吗(电脑激活了还能七天无理由吗)

    电脑激活了还能退吗(电脑激活了还能七天无理由吗)

  • apdl是什么文件(ap是什么文件类型)

    apdl是什么文件(ap是什么文件类型)

  • i34130最高配什么显卡(i34130性能怎么样)

    i34130最高配什么显卡(i34130性能怎么样)

  • mivideo文件夹可以删除吗(miguvideo是什么文件夹)

    mivideo文件夹可以删除吗(miguvideo是什么文件夹)

  • 华为nova7se有nfc功能吗(华为nova7SE有nfc功能在哪里)

    华为nova7se有nfc功能吗(华为nova7SE有nfc功能在哪里)

  • l1300进纸和墨水灯闪烁(l1300进纸和墨水灯闪烁报卡纸什么问题?)

    l1300进纸和墨水灯闪烁(l1300进纸和墨水灯闪烁报卡纸什么问题?)

  • 苹果微信界面黑色怎么还原(苹果微信界面黑了怎么办)

    苹果微信界面黑色怎么还原(苹果微信界面黑了怎么办)

  • novell网属于什么网(novell网是局域网吗)

    novell网属于什么网(novell网是局域网吗)

  • 抖音主播可以设置几个管理员(抖音主播可以设置超管吗)

    抖音主播可以设置几个管理员(抖音主播可以设置超管吗)

  • 华为荣耀怎么分屏操作(华为荣耀怎么分屏操作技巧)

    华为荣耀怎么分屏操作(华为荣耀怎么分屏操作技巧)

  • 坚果手机是国产吗(坚果手机现在属于)

    坚果手机是国产吗(坚果手机现在属于)

  • 在windows中,分配CPU时间的基本单位是(在windows中分配cpu的基本单位是)

    在windows中,分配CPU时间的基本单位是(在windows中分配cpu的基本单位是)

  • 手机qq空间怎么发黄钻红包(手机qq空间怎么设置三天可见)

    手机qq空间怎么发黄钻红包(手机qq空间怎么设置三天可见)

  • 手机里的歌怎么传到另外的内存卡(手机里的歌怎么导入mp3)

    手机里的歌怎么传到另外的内存卡(手机里的歌怎么导入mp3)

  • 手机怎么传歌到内存卡(手机怎么传歌到电脑酷狗音乐)

    手机怎么传歌到内存卡(手机怎么传歌到电脑酷狗音乐)

  • 表格自动换行快捷键(表格自动换行快捷键c)

    表格自动换行快捷键(表格自动换行快捷键c)

  • 保存的文件在哪里找(电脑上保存的文件在哪)

    保存的文件在哪里找(电脑上保存的文件在哪)

  • 瑞和宝pos机怎么用(瑞和宝pos机怎么样)

    瑞和宝pos机怎么用(瑞和宝pos机怎么样)

  • win10玩cf卡顿解决方法(win10玩cf卡)

    win10玩cf卡顿解决方法(win10玩cf卡)

  • 苹果qq轻应用在哪里(苹果qq轻聊版2021最新下载)

    苹果qq轻应用在哪里(苹果qq轻聊版2021最新下载)

  • QQ音乐怎么显示歌词锁屏(qq音乐怎么显示二维码)

    QQ音乐怎么显示歌词锁屏(qq音乐怎么显示二维码)

  • 拼多多的多多种菜在哪(拼多多的多多种菜的天天享折每天都是几折啊)

    拼多多的多多种菜在哪(拼多多的多多种菜的天天享折每天都是几折啊)

  • 微博可以通过手机号码找人吗(微博可以通过手机号码添加好友吗)

    微博可以通过手机号码找人吗(微博可以通过手机号码添加好友吗)

  • 【进阶】TS 中的 类型断言 和 泛型(ts入门教程)

    【进阶】TS 中的 类型断言 和 泛型(ts入门教程)

  • 【Vue】初识Vue,Vue简介及Vue Devtools配置(vue入门)

    【Vue】初识Vue,Vue简介及Vue Devtools配置(vue入门)

  • 合同印花税怎么贴
  • 一般纳税人印花税是季报还是月报
  • 工会经费返还怎么使用
  • 新会计准则中资产减值论文
  • 纳税人多缴税款的退还期限
  • 记账凭证和通用凭证一样
  • 证券交易所风险公告怎么写
  • 资产重组过程中资产转出的税收问题
  • 公司开办费有哪些
  • 营改增是初次分配还是再分配
  • 所得税退税会计账务怎么处理
  • 诉讼费走哪个会计科目
  • 广告费支出限额
  • 年末计提存货跌价准备
  • 没有缴纳社保怎么开证明
  • 发票报销的补助是否缴纳个人所得税?
  • 计提个人生产经营所得个税需要贴附件吗
  • 普通发票查不到信息怎么办
  • 消费税和增值税的不同之处
  • 吊车租赁费计入什么会计科目
  • 国有资产无偿划转实施方案
  • 企业把活承包给个人,和企业有劳动关系吗?
  • 应交税金月底可以有余额吗
  • 如何理解内容
  • 代垫运费的会计处理
  • 电脑系统出问题了怎么办
  • linux使用范围
  • cortana小娜可以卸载吗
  • 企业开发产品转为自用的,不得在税前扣除折旧费用
  • linux系统如何更改主机名
  • srv.exe病毒
  • 贷款减值损失计提还能转回吗
  • 会计月末做账
  • 员工的收入
  • 销货退回与折让属于什么科目
  • 什么情况下可以领取失业保险金
  • 动产租赁增值税税率最新
  • 用python编写
  • 手把手教你实现用户登录界
  • 前端开发软件哪个最好
  • vue springboot
  • 为什么我会选择那个对我一般的男人结婚
  • php5魔术方法
  • 公允价值变动收益借方是增加还是减少
  • 一般纳税人申请转为小规模纳税人
  • 合伙结算转借款
  • mongodb4.4.2安装教程
  • php出现乱码
  • sql server2008中删除表中记录的命令
  • 企业转移地点剩余房产
  • 季节性停工折旧计入什么科目
  • 小规模纳税人减按1%政策
  • 财政拨付注册资金怎么填
  • 小微企业免税的标准
  • 工业企业增值税税率
  • MySQL MEM_ROOT详解及实例代码
  • sql行变列有几种方法
  • sun solaris 8何启用telnet ftp 功能
  • win7笔记本电脑怎么重装系统教程
  • mac上如何卸载软件
  • wind10怎么恢复wind7
  • 延迟windows更新
  • win10系统怎么设置最好
  • AndEngine 《Android游戏开发实践指南》之“吸血鬼游戏”实例学习(一)
  • nodejs 性能测试
  • 读长沙师范学院收费多少钱
  • unity音乐thefatrat
  • 改变的拼音
  • shell中大括号
  • 全面理解和准确把握新时代党的建设总要求心得体会
  • 探探左划还是右划
  • 焦点问题是什么
  • 安卓手机管家删除的照片怎么恢复
  • 江苏省国家税务局
  • 江苏省国税电子税务局官网发票验
  • 北京市网上税务局(自然人版)
  • 税控盘登陆失败
  • 销售不动产增值税税率
  • 电池涂料消费税问题
  • 税票开户银行怎么填写?
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设