Serverless Framework部署AWS服务后突然报TypeError: e is not a function错误
问题根因
该问题是XCode Command Line Tools v13 与低版本 Serverless Framework 的打包兼容Bug,和业务代码、serverless.yml 配置无关联:
- XCode CLT v13 升级后,系统自带的
tar命令行为发生非向下兼容变更 - 你使用的 Serverless Framework v2.10.0 未适配该变更,打包代码压缩包时会错误生成空的业务代码文件
- 本地调用不会触发打包流程,因此不会复现问题,仅部署到远端的代码会触发异常
验证方式
执行 sls package 命令生成部署包,找到当前目录下 .serverless 文件夹内的 zip 压缩包,解压后查看业务函数文件,可确认文件内容为空,问题出在本地打包环节,和AWS部署环节无关。
解决方案
可任选以下任一方案修复:
- 升级 Serverless Framework 到 v2.60.0 及以上版本,该版本官方已完成适配修复,升级后重新部署即可
- 若暂时不想升级 Serverless 版本,可通过 Homebrew 安装 GNU tar 替换系统默认 tar:
执行brew install gnu-tar,随后将 gnu-tar 加入环境变量 PATH 优先级高于系统 tar,再重新部署即可 - 临时降级 XCode Command Line Tools 到 v12 版本,也可解决打包异常,不推荐长期使用该方案
内容的提问来源于stack exchange,提问作者the_smart_home_maker
相关产品推荐
相关产品推荐

