Serverless添加Layers时出现No file matches include / exclude patterns错误求助
错误产生原因
- 你配置的layers段中
path: certificate对应的certificate目录不存在,或是空目录:Serverless打包Lambda层时会校验指定路径下是否存在可打包的文件,路径不存在、目录为空都会触发文件匹配失败的错误。 serverless-plugin-typescript插件的默认过滤规则排除了证书目录:该插件会默认仅保留编译后的ts相关文件,未显式配置包含的目录会被直接过滤,导致层打包时找不到对应文件。- 目录名拼写/大小写不匹配:如果实际证书目录名和配置中
certificate不一致(比如实际为复数certificates、大小写拼写错误),在区分大小写的操作系统(MacOS、Linux)上会匹配失败。
解决方法
- 首先校验基础路径:确认项目根目录下存在和配置完全匹配的
certificate目录,且目录内至少有1个有效证书文件(如.pem、.crt格式文件),不允许为空目录。 - 显式配置层的包含规则:在layers配置中添加include规则,避免被全局排除规则过滤,修改后的layers配置如下:
layers: certificates: path: certificate include: - ./**
- 调整TypeScript插件的过滤规则:在custom配置段添加插件的include配置,将证书目录加入白名单,避免被插件过滤:
custom: name: foundation serverlessPluginTypescript: include: - 'certificate/**'
- 如果实际证书目录名和配置不一致,直接修正
path字段的值和实际目录名保持一致即可。
内容的提问来源于stack exchange,提问作者Noman Maqsood
相关产品推荐
相关产品推荐

