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

如何在Serverless Framework的package输出中排除@aws-sdk包?

有效排除@aws-sdk包的解决方案

1. 修正forceExclude的路径(最直接修复)

你之前的forceExclude配置路径有误,@aws-sdk是作用域包,正确路径应为node_modules/@aws-sdk/**,而非node_modules/aws-sdk/**。修改后的配置如下:

service: my-service

provider:
  name: aws
  runtime: nodejs14.x

package:
  exclude:
    - node_modules/**
  forceExclude:
    - node_modules/@aws-sdk/**

functions:
  # 你的函数配置...

forceExclude优先级高于所有include规则,会强制忽略指定路径,确保该包不会被打包进构建文件。

2. 精准控制依赖的包含/排除

如果项目需要保留部分node_modules依赖,可以先排除所有node_modules,再显式声明需要保留的依赖,避免意外包含@aws-sdk:

package:
  exclude:
    - node_modules/**
  include:
    - node_modules/需要保留的包1/**
    - node_modules/需要保留的包2/**
  forceExclude:
    - node_modules/@aws-sdk/**

3. 使用serverless-webpack进行严格依赖管理

如果上述方法仍不生效,推荐用serverless-webpack插件,借助Webpack的树摇和externals配置精准控制打包内容:

  1. 安装依赖:
npm install serverless-webpack webpack webpack-cli --save-dev
  1. 在serverless.yml中添加插件配置:
plugins:
  - serverless-webpack
  1. 创建webpack.config.js,配置externals排除@aws-sdk:
module.exports = {
  entry: './handler.js',
  target: 'node',
  externals: {
    '@aws-sdk/*': 'commonjs @aws-sdk/*'
  },
  mode: 'production'
};

Webpack会将@aws-sdk相关模块标记为外部依赖,不会打包到最终构建文件中。

额外检查点

  • 清理构建缓存:执行serverless package --clean,避免旧构建文件干扰结果。
  • 排查插件影响:暂时禁用serverless-offline等第三方插件,测试是否是插件修改了打包规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 14:35:16