Serverless部署报错:无文件匹配包含/排除规则求解决方案
解决Serverless部署「No file matches include / exclude patterns」报错
问题场景
部署Serverless应用时触发No file matches include / exclude patterns错误,此前添加exclude字段排除node_modules时首次出现该错误,移除exclude字段后问题仍未解决。相关配置及报错信息如下:
Serverless.yml配置
service: lambda-woo-user-service-dev-app provider: name: aws runtime: nodejs16.x stage: dev region: us-east-1 memorySize: 2048 apiGateway: restApiId: pc92cc9jz8 restApiRootResourceId: 3y783dgut3 provider.iam.role.statements: - Effect: "Allow" Action: - "s3:*" Resource: { "Fn::Join": ["", ["arn:aws:s3:::wooo-s3", "/*"]] } plugins: - serverless-dotenv-plugin - serverless-plugin-warmup custom: warmup: default: enabled: true # Whether to warm up functions by default or not folderName: ".warmup" # Name of the folder created for the generated warmup cleanFolder: false memorySize: 256 functions: app: handler: server.handler warmup: default: enabled: true timeout: 120 events: - http: path: / method: ANY cors: true # contentHandling: CONVERT_TO_BINARY - http: path: /{proxy+} method: ANY cors: true # contentHandling: CONVERT_TO_BINARY
报错信息
$ serverless DOTENV: Loading environment variables from .env: - PORT - APP_NAME - EMAIL ? Do you want to deploy now? Yes DOTENV: Loading environment variables from .env: - PORT - APP_NAME - EMAIL Deploying lambda-woo-user-service-dev-app to stage prod (us-east-1) WarmUp: Creating warmer "default" to warm up 1 function × Stack lambda-woo-user-service-dev-app-prod failed to deploy (2s) Environment: win32, node 18.12.1, framework 3.25.1, plugin 6.2.2, SDK 4.3.2 Credentials: Local, environment variables Docs: docs.serverless.com Support: forum.serverless.com Bugs: github.com/serverless/serverless/issues Error: No file matches include / exclude patterns 1 deprecation found: run 'serverless doctor' for more details
可行解决方案
1. 修正IAM角色配置语法错误
你的serverless.yml中IAM角色声明的写法存在语法错误,正确的嵌套结构应该是provider.iam.role.statements,而非直接在provider下写provider.iam.role.statements。错误的配置可能导致Serverless解析异常,进而影响打包逻辑。
修正后的provider部分:
provider: name: aws runtime: nodejs16.x stage: dev region: us-east-1 memorySize: 2048 apiGateway: restApiId: pc92cc9jz8 restApiRootResourceId: 3y783dgut3 iam: role: statements: - Effect: "Allow" Action: - "s3:*" Resource: !Join ["", ["arn:aws:s3:::wooo-s3", "/*"]]
2. 清理Serverless缓存并重新部署
之前的exclude配置可能残存在本地缓存中,导致打包逻辑异常。执行以下命令清理缓存并重新部署:
serverless deploy --no-cache
如果问题仍存在,可以删除项目根目录下的.serverless文件夹,再重新执行部署命令。
3. 显式指定打包文件
添加package字段显式声明需要打包的文件,覆盖默认的include/exclude规则,避免隐性规则导致的匹配问题。示例配置:
package: include: - server.js # 对应handler指定的文件 - node_modules/** # 包含所有依赖 - .env # 包含环境变量文件 - src/** # 如果有源码目录,按需添加
根据你的实际项目文件结构调整include列表。
4. 检查文件结构与handler路径
确认handler: server.handler对应的文件存在:项目根目录下是否有server.js(或server.ts,如果使用TypeScript),且文件中正确导出了handler函数。如果文件路径错误或不存在,会触发该报错。
5. 调整Serverless框架版本
当前使用的Serverless框架版本(3.25.1)可能存在已知bug,尝试升级到最新稳定版或降级到3.20.x系列版本:
# 升级到最新版 npm install -g serverless@latest # 降级到指定版本 npm install -g serverless@3.20.0
内容的提问来源于stack exchange,提问作者Tayyab
相关产品推荐
相关产品推荐

