浏览器是否可以兼容node 独有的api

gg22g2
  • 58

我在使用webpack打包项目后,运行时报错 Buffer is not defined
查看了一下,是应为依赖了jsesc包,而这个包中有这样的
const isBuffer = Buffer.isBuffer;

但是Buffer是node.js中才有的api,我使用chrome浏览器看了下,没有Buffer这个对象。是否有一种办法可以在打包阶段使用babel这样的工具将这些node.js里的api转化成浏览器里有的,或者有没有在浏览器端,实现了node.js里api的Polyfill。

回复
阅读 557
4 个回答
✓ 已被采纳

试了试用browserify处理,确实对Buffer这些api做了兼容,在浏览器端可以用。

感觉你解决问题的方向错了,你web应用依赖了node的js库不应该想办法把这个依赖替换掉吗?

如果只是单纯了用了node环境的buffer的话,webpack和browserify应该都能在打包的时候自动打包polyfill,不过要用require方式引入buffer以确保打包工具能识别出来
我记得webpack4是默认自动打包node api的polyfill,webpack5需要配置一下
还有babel官方有提供浏览器版本的(https://www.npmjs.com/package...),有没有你要的那个@babel/generator就不清楚了

浏览器不支持支持读取二进制信息,因该是没有办法兼容,

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
你知道吗?

宣传栏