使用AWS-SDK编写的简单示例代码无法通过browserify打包求助
问题原因
你安装的@aws-sdk/client-lex-runtime-v2默认是面向Node.js运行环境的版本,内部依赖了Node.js内置核心模块process,浏览器环境本身没有这个原生模块,browserify打包时没有找到对应的polyfill实现,才会抛出找不到process文件的错误。Node环境运行正常是因为Node本身自带process模块,不需要额外引入。
解决方案
方案1:使用AWS SDK官方适配规则打包
AWS SDK v3已经提供了浏览器端打包的官方适配预设,无需修改业务代码,只需添加对应的转换依赖即可:
- 安装所需开发依赖:
npm install --save-dev process @aws-sdk/babel-preset-aws-sdk babelify
- 执行打包时指定babelify转换规则:
browserify index.js -t [ babelify --presets [ @aws-sdk/babel-preset-aws-sdk ] ] > indexBundle.js
方案2:手动绑定process polyfill
如果不想引入babel相关依赖,可直接给browserify指定process模块的polyfill路径:
- 先安装process polyfill:
npm install --save-dev process
- 执行打包时添加模块绑定参数:
browserify index.js -r process:process > indexBundle.js
方案3:直接使用预构建的浏览器版SDK
如果你的代码仅在浏览器环境运行,也可以直接引入AWS SDK v3的预构建浏览器版本,无需browserify打包,直接在HTML中通过script标签引入即可。
内容的提问来源于stack exchange,提问作者Eric Zinda
相关产品推荐
相关产品推荐

