我已经在使用Prisma 2的Heroku上部署了NestJs应用程序,但当我运行命令时heroku bash上的npx prisma --version
我得到了Prisma CLI version: prisma/1.34.10 (linux-x64) node-v14.15.0
,但我已经安装了prisma 2.11.0,我想使用prisma 2 cli来内省我现有的数据库,并运行prisma generate。
我设法内省了我现有的数据库,并通过在脚本部分的package.json上添加heroku postbuild命令来运行prisma generate,如下所示:
{
"scripts": {
"heroku-postbuild": "prisma introspect && prisma generate"
}
}
现在,当我按下heroku时,将执行heroku-postbuild
命令。
注意:默认情况下,Heroku在安装了package.json中dependencies和devDependencies下列出的所有依赖项后,将在部署应用程序之前剥离(修剪devDependencys(在devDependency下声明的包。
heroku-postbuild
在Heroku安装依赖项之后运行,但在Heroku修剪和缓存依赖项之前运行。因此,为什么指定的棱镜内省&;prisma-generate将使用package.json.上指定的prisma-cli
注意:要跳过devDependencies的修剪步骤,请将NPM_CONFIG_PRODUCTION设置为false,如下所示,这样我们就可以在运行时访问在devDependency下声明的包:
heroku config:set NPM_CONFIG_PRODUCTION=false
在将NPM_CONFIG_PRODUCTION设置为false之后,如果我们运行npx prisma --version
,我们将从package.json 获得安装的版本
欲了解更多信息,请访问:https://devcenter.heroku.com/articles/nodejs-support#build-行为