You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Serverless Framework中包含静态文件?NodeJS Lambda场景疑问

解决Serverless Framework部署Lambda时静态文件(schema.json)未被打包的问题

我之前也碰到过一模一样的坑!别着急,咱们一步步排查解决:

1. 先确认文件路径和拼写绝对正确

Serverless的配置路径是相对于serverless.yml所在的项目根目录的,而且Lambda运行在Linux环境下,路径是大小写敏感的!

  • 先在本地终端执行命令确认文件存在:
    • Mac/Linux:ls libs/schemas/schema.json
    • Windows:dir libs\schemas\schema.json
  • 检查配置里的路径有没有拼写错误,比如把schemas写成schema,或者大小写不一致。

2. 检查默认排除规则的影响

Serverless会自动继承.gitignore和.npmignore里的排除规则,这是最容易踩的坑!

  • 打开你的.gitignore/.npmignore,看看有没有类似*.json、libs/schemas/这样的规则,如果有,会直接把你的schema文件排除在外。
  • 解决方法:
    • 要么在.gitignore里添加例外:!libs/schemas/schema.json(感叹号表示不排除该文件)
    • 要么在serverless.yml的package配置里明确覆盖排除规则,比如:
      package:
        include:
          - libs/schemas/schema.json
        exclude:
          - node_modules/** # 只排除必要的依赖文件,避免默认规则干扰
      

3. 调整Serverless的package配置写法

有时候全局配置的写法需要更明确,或者如果开启了函数独立打包,要单独配置:

  • 如果你的service是全局打包(individually: false,默认值),确保package配置里包含了所有必要文件,比如handler.js和静态文件:
    service: feed-validator-service
    provider:
      name: aws
      runtime: nodejs18.x
    package:
      individually: false
      include:
        - handler.js
        - libs/schemas/schema.json
    functions:
      validateFeed:
        handler: handler.validate
    
  • 如果开启了individually: true(每个函数单独打包),需要在对应的函数配置里添加include:
    functions:
      validateFeed:
        handler: handler.validate
        package:
          include:
            - libs/schemas/schema.json
    

4. 在Lambda函数里用正确的路径读取文件

就算文件打包进去了,读取路径错了也会报找不到!Lambda的工作目录是部署包的根目录,建议用Node的path模块生成绝对路径,避免相对路径的坑:

const path = require('path');
// __dirname 是当前handler文件所在的目录,确保路径拼接正确
const schemaPath = path.join(__dirname, 'libs', 'schemas', 'schema.json');
const schema = require(schemaPath);

5. 手动验证打包结果

执行sls package后,打包文件默认存放在.serverless目录下,解压对应的zip包,直接查看libs/schemas/schema.json是否存在:

  • 如果文件不在包里:回到前面的步骤检查配置和排除规则
  • 如果文件在包里但Lambda还是找不到:检查代码里的读取路径是否正确

内容的提问来源于stack exchange,提问作者yabune

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 03:11:27