通过CodePipeline部署Prisma ORM项目到Elastic Beanstalk报错求助
问题根因
- 你仅为Prisma客户端指定了部署环境(Elastic Beanstalk Amazon Linux)的二进制目标,缺失了构建环境(CodeBuild Ubuntu)的适配配置
- 构建流程中
prisma generate的执行时机存在问题:npm install执行时会默认触发Prisma客户端生成,此时使用的是默认配置,后续post_build阶段的生成操作如果没有正确覆盖,会导致最终打包的客户端仍然没有目标二进制文件 - 如果构建产物未包含
node_modules/.prisma目录,Elastic Beanstalk部署时自动执行的npm install会重新生成客户端,也会出现配置不生效的问题
解决方案
- 修正
schema.prisma的二进制目标配置,同时适配构建和部署两个环境:
generator client { provider = "prisma-client-js" binaryTargets = ["native", "rhel-openssl-1.0.x"] }
其中native适配CodeBuild的Ubuntu构建环境,rhel-openssl-1.0.x适配Elastic Beanstalk的Amazon Linux运行环境。
- 调整buildspec执行顺序,确保生成的Prisma客户端配置生效:
install: commands: - npm ci # 安装依赖后立刻执行生成命令,覆盖npm install默认生成的客户端 - npm run generate post_build: commands: - echo Build completed on `date` # 可选校验步骤,确认目标二进制已生成 - ls node_modules/.prisma/client/ | grep rhel-openssl-1.0.x
- 检查buildspec的artifacts配置,确保
node_modules/.prisma目录被包含在上传到Elastic Beanstalk的构建产物中,避免部署时重新生成客户端。
内容的提问来源于stack exchange,提问作者Lasharela
相关产品推荐
相关产品推荐

