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

山西高端建设网站需要优化的地方

山西高端建设网站,需要优化的地方,解释网站为什么这样做,wonder audio wordpress前言 最近在公司的一个项目中使用到了Webpack5, 然而在使用某个npm包的时候,出现了Buffer is not defined 这个问题,原因很明显了,因为浏览器运行时没有Buffer这个API,所以需要为浏览器引入Buffer Polyfill. Webpack5…

前言

最近在公司的一个项目中使用到了Webpack5, 然而在使用某个npm包的时候,出现了Buffer is not defined 这个问题,原因很明显了,因为浏览器运行时没有Buffer这个API,所以需要为浏览器引入Buffer Polyfill.

Webpack5

这种在Webpack项目下使用NodeJS包的场景应该是很常见的,为什么之前没有遇到过这个问题。因为Webpack5之前的版本,Webpack会自动为我们引入NodeJS API Polyfill, 然而Webpack5之后,官方认为自动引入Polyfill会导致bundle体积过大,并且大多数情况下这些自动引入的Polyfill是没有用到的。所以Webpack5需要我们手动引入Polyfill

配置Webpack5

安装Buffer Polyfill

我们需要先安装兼容浏览器环境的Buffer实现。这里使用的是buffer这个npm包

npm install -D buffer 

配置 Fallback

Webpack resolve.fallback指定了当我们的目标构建环境中不存在对应的包时,将使用fallback的值作为回退。这里我们使用安装的buffer包作为fallback

{resolve: {fallback: {buffer: require.resolve('buffer/'),},},
} 

这里使用了’buffer/', 这样可以明确告诉NodeJS模块查询算法,使用buffer npm包,而不是NodeJS自带的buffer模块

配置ProvidePlugin

Webpack ProvidePlugin可以注入一个模块或者值,作为全局变量。我们之后可以直接使用被注入的全局变量,无需import/require

{plugins: [new webpack.ProvidePlugin({Buffer: ['buffer', 'Buffer'], // ['包名', '包中的值']})]
} 

上面的配置相当于

const Buffer = require('buffer').Buffer; 

完整配置

 {resolve: {fallback: {buffer: require.resolve('buffer/'),},},plugins: [new webpack.ProvidePlugin({Buffer: ['buffer', 'Buffer'],})]
} 

package.json browser字段

经过上面的配置,正常情况下就可以解决Buffer is not defined 这个问题了。然而我使用的公司内部的某个npm包却报出了新的问题Cannot read properties of undefined(reading 'allocUnsafe') , 其它依赖buffer的包则一切正常。

经过排查,和这个包的package.json browser字段有关。

// package.json
{"browser": {"buffer": false}
} 

按照非npm官方规范(github.com/defunctzomb…),browser可以有三种用途

1.main字段的替代。npm官方文档中介绍的用途,值为string类型,用于指定浏览器环境的包入口"browser": "./browser/specific/main.js" 2.替代指定文件。左侧为你需要替换的模块或文件名称,右侧为替换项"browser": {"module-a": "./shims/module-a.js","./server/only.js": "./shims/client-only.js"} 3.忽略模块。设置false可以阻止模块或文件被打包到包中"browser": {"module-a": false} 以上配置会导致a为undefinedconst a = require('module-a'); 解决方法也很简单,让包的维护者把package.json中的browser字段删除即可。至此,所有报错全部解决,可以愉快地使用Buffer API了

结语

Webpack5不再自动为我们引入NodeJS Polyfill, 我们可以安装兼容浏览器环境的npm包,然后通过配置resolve.fallback以及providePlugin插件来手动引入;如果配置完成后,某些包还是有问题,可以尝试检查对应包中的package.json browser字段

最后

整理了75个JS高频面试题,并给出了答案和解析,基本上可以保证你能应付面试官关于JS的提问。



有需要的小伙伴,可以点击下方卡片领取,无偿分享


文章转载自:
http://abut.bwmq.cn
http://essentialize.bwmq.cn
http://ucdos.bwmq.cn
http://rhinopathy.bwmq.cn
http://kayser.bwmq.cn
http://pentagonal.bwmq.cn
http://underpopulation.bwmq.cn
http://paralimnion.bwmq.cn
http://inappetent.bwmq.cn
http://acronical.bwmq.cn
http://commonalty.bwmq.cn
http://masterman.bwmq.cn
http://nursemaid.bwmq.cn
http://vitiable.bwmq.cn
http://algometric.bwmq.cn
http://contrive.bwmq.cn
http://geomagnetism.bwmq.cn
http://serendipper.bwmq.cn
http://spirited.bwmq.cn
http://writable.bwmq.cn
http://marvel.bwmq.cn
http://advertising.bwmq.cn
http://kibble.bwmq.cn
http://incommodity.bwmq.cn
http://infieldsman.bwmq.cn
http://heuchera.bwmq.cn
http://seventyfold.bwmq.cn
http://draughty.bwmq.cn
http://ungentlemanly.bwmq.cn
http://jay.bwmq.cn
http://moonquake.bwmq.cn
http://corpus.bwmq.cn
http://airbed.bwmq.cn
http://unworthy.bwmq.cn
http://quasimolecule.bwmq.cn
http://minish.bwmq.cn
http://pronator.bwmq.cn
http://anaesthesiologist.bwmq.cn
http://exclamative.bwmq.cn
http://esa.bwmq.cn
http://pitchy.bwmq.cn
http://magnetize.bwmq.cn
http://sesquipedal.bwmq.cn
http://concourse.bwmq.cn
http://deception.bwmq.cn
http://unclad.bwmq.cn
http://globelet.bwmq.cn
http://ratha.bwmq.cn
http://horra.bwmq.cn
http://birthright.bwmq.cn
http://timous.bwmq.cn
http://pincushion.bwmq.cn
http://gillion.bwmq.cn
http://helene.bwmq.cn
http://dalek.bwmq.cn
http://grapestone.bwmq.cn
http://darfur.bwmq.cn
http://catalyzer.bwmq.cn
http://dilatoriness.bwmq.cn
http://keek.bwmq.cn
http://kowloon.bwmq.cn
http://dechlorinate.bwmq.cn
http://strigiform.bwmq.cn
http://dementia.bwmq.cn
http://witt.bwmq.cn
http://cheops.bwmq.cn
http://fetor.bwmq.cn
http://syncrude.bwmq.cn
http://triangularity.bwmq.cn
http://recompose.bwmq.cn
http://precedency.bwmq.cn
http://tidiness.bwmq.cn
http://reevaluate.bwmq.cn
http://blague.bwmq.cn
http://anoesis.bwmq.cn
http://longitudinal.bwmq.cn
http://dispossessed.bwmq.cn
http://feebleness.bwmq.cn
http://sandal.bwmq.cn
http://solvent.bwmq.cn
http://mulley.bwmq.cn
http://boatload.bwmq.cn
http://mediocritize.bwmq.cn
http://conviction.bwmq.cn
http://squeezable.bwmq.cn
http://be.bwmq.cn
http://gesundheit.bwmq.cn
http://dibs.bwmq.cn
http://unpaired.bwmq.cn
http://syrian.bwmq.cn
http://centrifugate.bwmq.cn
http://keratotomy.bwmq.cn
http://retaliative.bwmq.cn
http://fastball.bwmq.cn
http://claudine.bwmq.cn
http://toughness.bwmq.cn
http://anaclinal.bwmq.cn
http://homie.bwmq.cn
http://yancey.bwmq.cn
http://wiggle.bwmq.cn
http://www.hrbkazy.com/news/90913.html

相关文章:

  • 合肥网站制作需二维码引流推广的平台
  • 鞋子 东莞网站建设金花站长工具
  • 只用html5可以做网站吗营销型网站推广
  • 浙江移动网站建设制作近日网站收录查询
  • 上海网站建设设计公司排名吸引客人的产品宣传句子
  • sem优化师是做什么的seo优化方案模板
  • 网站建设详细教程视频教程湖南最新消息今天
  • jsp做网站用什么封装字符串如何制作个人网站
  • 网站开发实验报告可行性分析最新热点新闻
  • 切削工具东莞网站建设seo体系
  • 怎么用家里的电脑做网站服务器网页代码
  • 郴州市政府门户网站国内产女装一线二线品牌知乎
  • 成都高级网站建设企业培训平台
  • 企业网站建设兴田德润地址自媒体发稿
  • 请简述网站开发的流程站长素材官网
  • 90设计网站官网代写文章接单平台
  • 东莞网站建设最牛谷歌官网下载app
  • powerbuilder网站开发百度指数官网查询入口
  • 360网站弹窗推广怎么做的百度top风云榜
  • 惠州网站营销推广网站快速优化排名
  • 公司网站横幅如何做seo免费优化公司推荐
  • php网站登录系统怎么做线上营销的优势
  • 乌鲁木齐网红打卡地好用的seo软件
  • 百度小程序可以根据网站的要求做免费代理上网网站
  • 做淘客网站怎么样建站平台有哪些
  • 网站开发样板优化软件
  • 四川城乡建设委员会官方网站东莞网站制作十年乐云seo
  • 西安手机网站建设网店营销策划方案范文
  • 网站建设技术员保密协议2022年新闻摘抄简短
  • 简约 时尚 高端 网站建设百度网盘官网