我已经在使用 Prisma 2 的 Heroku 上部署了 NestJs 应用程序,但是当我运行命令时
在heroku bash上的npx prisma --version
我得到Prisma CLI版本:prisma/1.34.10 (linux-x64)node-v14.15.0
但我已经安装了prisma 2.11。 0,我想使用 Prisma 2 cli 内省(introspection)我现有的数据库,并运行 prismagenerate。
最佳答案
我设法内省(introspection)现有数据库并通过在脚本部分的 package.json 上添加 heroku-postbuild 命令来运行 prisma generated,如下所示:
{
"scripts": {
"heroku-postbuild": "prisma introspect && prisma generate"
}
}
现在,当我推送到heroku时,heroku-postbuild
命令将被执行。
注意:默认情况下,Heroku 在安装了 dependency 和 devDependencies 下的 package.json 中列出的所有依赖项后,将在部署应用程序之前删除(修剪 devDependencies)在 devDependencies 下声明的包。
heroku-postbuild
在 Heroku 安装依赖项之后、但在 Heroku 修剪和缓存依赖项之前运行。因此,为什么指定的 prisma introspect && prisma generated 将使用 package.json 上指定的 prisma cli。
注意:要跳过 devDependency 的修剪步骤,请将 NPM_CONFIG_PRODUCTION 设置为 false,如下所示,以便我们可以在运行时访问 devDependency 下声明的包:
heroku 配置:设置 NPM_CONFIG_PRODUCTION=false
现在将 NPM_CONFIG_PRODUCTION 设置为 false 后,如果我们运行 npx prisma --version
我们将从 package.json 获取已安装的版本
了解更多信息请访问:https://devcenter.heroku.com/articles/nodejs-support#build-behavior
关于heroku - 如何在 Heroku 上使用 Prisma 2 CLI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65165511/