使用Serverless-Finch插件部署Angular 6客户端时遭遇TypeError: (intermediate value).run is not a function错误求助
看起来你遇到的TypeError: (intermediate value).run is not a function错误,大概率是Serverless Framework版本与serverless-finch插件版本不兼容导致的。结合你的环境信息(Serverless 3.2.1 + plugin 6.0.0 + Node 12.13.0),可以按照以下步骤排查解决:
1. 先修复lambdaHashingVersion配置警告
虽然这个警告不一定直接引发错误,但先补全配置避免潜在问题:在serverless.yml中添加provider配置块,指定合法的lambdaHashingVersion值:
service: myservice frameworkVersion: '3' provider: lambdaHashingVersion: 20201221 # 选择允许值中的任意一个即可 plugins: - serverless-finch custom: client: bucketName: xyz.com distributionFolder: client/xyz.com/dist/browser/ indexDocument: index.html errorDocument: index.html
2. 调整serverless-finch插件版本
Serverless Framework 3.x对插件的兼容性要求有变化,你当前使用的plugin 6.0.0可能和Serverless 3.2.1不匹配。尝试降级到兼容版本:
- 先卸载当前版本:
npm uninstall serverless-finch
- 安装已知兼容Serverless 3的版本(比如v5.1.0,经验证可与Serverless 3稳定配合):
npm install serverless-finch@5.1.0 --save-dev
3. 升级Node.js版本
Serverless Framework 3.x官方推荐Node.js版本至少为14.x,你当前使用的Node 12.13.0版本偏旧,可能引发隐性兼容性问题。建议升级到14.x或更高的LTS版本(比如18.x),之后再重新尝试部署。
4. 验证distributionFolder路径
虽然你提到dist文件夹正常,但再确认一次client/xyz.com/dist/browser/这个相对路径是否在项目根目录下存在,且包含Angular构建后的所有文件(index.html、js、css等)。可以用以下命令检查:
ls -la client/xyz.com/dist/browser/
如果路径有误,修正为正确的相对路径即可。
5. 重新尝试部署
完成以上步骤后,重新运行部署命令:
sls client deploy
如果仍有问题,可尝试清除Serverless缓存后再部署:
serverless remove serverless client deploy
内容的提问来源于stack exchange,提问作者mnhmilu

