部署Serverless AWS Lambda时Webpack未打包全部依赖,报错需手动安装pg包
问题根因
你遇到的依赖缺失问题是Sequelize的动态加载机制导致的:Sequelize会根据你配置的数据库类型动态加载对应的驱动包(pg、pg-hstore属于PostgreSQL驱动),webpack做静态依赖扫描时无法识别这种隐式依赖,因此serverless-webpack在收集要打包的外部模块时就会漏掉这两个包。
解决方案
按优先级可选以下任意一种方案即可:
方案1:强制指定打包依赖(最便捷)
修改serverless.ts中的webpack配置,强制将pg、pg-hstore纳入打包范围:
custom: { webpack: { webpackConfig: './webpack.config.js', includeModules: { // 新增强制包含的依赖 forceInclude: ['pg', 'pg-hstore'] }, }, },
修改后重新打包即可在日志中看到pg、pg-hstore被纳入打包的外部模块列表。
方案2:代码显式引入依赖
在你初始化Sequelize实例的代码文件顶部,手动引入两个驱动包:
import 'pg' import 'pg-hstore'
webpack扫描到显式导入后会自动将这两个包纳入依赖树,无需修改打包配置。
检查项
执行上述操作前先确认两个点:
pg和pg-hstore是写在package.json的dependencies字段下,而非devDependencies下,serverless-webpack默认不会打包开发依赖- 可以删除
webpack.config.js中的externals: [nodeExternals()]配置:开启includeModules: true后serverless-webpack会自动处理node_modules外部化逻辑,自行配置nodeExternals可能会和插件的依赖收集逻辑冲突
内容的提问来源于stack exchange,提问作者karim uddin
相关产品推荐
相关产品推荐

