【问题标题】:How to use Prisma 2 CLI on Heroku如何在 Heroku 上使用 Prisma 2 CLI
【发布时间】:2021-03-17 19:15:14
【问题描述】:
我已经在使用 Prisma 2 的 Heroku 上部署了 NestJs 应用程序,但是当我运行命令时
npx prisma --version 在 heroku bash 上我得到 Prisma CLI version: prisma/1.34.10 (linux-x64) node-v14.15.0 但我已经安装了 prisma 2.11.0,我想使用 Prisma 2 cli 内省我现有的数据库,并运行 prisma generate。
【问题讨论】:
标签:
heroku
nestjs
prisma
heroku-cli
【解决方案1】:
我设法通过在脚本部分的 package.json 中添加 heroku-postbuild 命令来检查我现有的数据库并运行 prisma generate,如下所示:
{
"scripts": {
"heroku-postbuild": "prisma introspect && prisma generate"
}
}
现在当我推送到 heroku 时,heroku-postbuild 命令将被执行。
注意:默认情况下,Heroku 在安装完依赖项和 devDependencies 下 package.json 中列出的所有依赖项后,会在部署应用程序之前剥离(Pruning devDependencies)devDependencies 下声明的包。
heroku-postbuild 在 Heroku 安装依赖项之后运行,但在 Heroku 修剪和缓存依赖项之前运行。因此,为什么指定的 prisma introspect && prisma generate 将使用 package.json 中指定的 prisma cli。
注意:要跳过 devDependencies 的修剪步骤,请将 NPM_CONFIG_PRODUCTION 设置为 false,如下所示,以便我们可以在运行时访问 devDependencies 下声明的包:
heroku config:set NPM_CONFIG_PRODUCTION=false
现在将 NPM_CONFIG_PRODUCTION 设置为 false 后,如果我们运行 npx prisma --version,我们将从 package.json 获取已安装的版本
欲了解更多信息,请访问:https://devcenter.heroku.com/articles/nodejs-support#build-behavior