创建 Bug 报告
概述
您可以通过创建**Bug 报告**来帮助我们改进 Prisma ORM。在创建 Bug 报告时,务必尽可能多地包含有关您遇到的问题的信息。这样,就更容易重现问题。
请注意,您也可以通过 GitHub 上的问题模板创建**功能请求**或询问**问题**。
在 GitHub 上在哪里打开 Bug 报告?
Prisma ORM 的工具分布在 GitHub 上 prisma
组织的不同存储库中。您可以在相应工具的存储库中打开一个新的问题。
如果您不确定在何处打开 GitHub 问题,您可以使用主 prisma/prisma
存储库作为默认值。我们的工程团队会定期对新问题进行分类,并在必要时将问题移至其他存储库。
理想情况:共享包含重现步骤的独立存储库
在理想情况下,您能够在隔离的环境中重现 Bug,并将其放入一个 GitHub 存储库中,以便您可以在报告中共享它。这样,我们就已经有了重现步骤,并且可以解决问题而无需进一步分类。
此 StackOverflow 指南 提供了许多关于创建最小、可重现示例的有用信息。
编写 Bug 报告的最佳实践
如果您没有时间创建问题的完整重现步骤,请尽可能多地包含有关该问题的信息。 Bug 报告模板 可以帮助您完成此操作。
包含日志和调试输出
请确保在问题中包含任何日志记录和调试输出,这可能有助于识别问题。
设置 DEBUG
环境变量
要从 Prisma ORM 获取其他输出,您可以将 DEBUG
设置为 *
export DEBUG="*"
打印 Prisma Client 的日志
您可以通过使用 log
选项实例化 Prisma Client 来启用其他日志
const prisma = new PrismaClient({ log: ['query', 'info', 'warn'] })
包含 Bug 描述、重现步骤和预期行为
在描述 Bug 时,包含以下信息很有帮助:
- 清晰简洁地描述 Bug 是什么。
- 重现 Bug 的步骤。
- 清晰简洁地描述您期望发生的事情。
- 屏幕截图(如果适用)。
展开以查看假设 Bug 报告的示例
示例
描述 Bug
@unique
属性在 email
字段上在我的模型中不起作用。我可以创建具有相同 email
的重复记录。
重现步骤:
我有这个 Prisma 模式(删除了所有不必要的模型和字段)。
model User {
id Int @id @default(autoincrement())
email String @unique
}
然后我运行 prisma generate
生成 Prisma Client。
然后我有一个 Node.js 脚本,它创建两个具有相同 email
的 User
记录。
import { PrismaClient } from '@prisma/client'
const prisma = new PrismaClient()
// A `main` function so that we can use async/await
async function main() {
const user1 = await prisma.create({
data: { email: '[email protected]' },
})
const user2 = await prisma.create({
data: { email: '[email protected]' },
})
console.log(user1, user2)
}
main()
.then(async () => {
await prisma.$disconnect()
})
.catch(async (e) => {
console.error(e)
await prisma.$disconnect()
process.exit(1)
})
预期行为
我期望在尝试创建与 user1
具有相同 email
的 user2
时出现异常,因为这违反了在 Prisma 模式中定义的 @unique
约束。
包含环境和设置信息
请包含有关您的环境和设置的任何信息。具体来说,包含以下信息很重要:
- 您使用的**操作系统**(例如 macOS、Windows、Debian、CentOS 等)。
- 您与 Prisma ORM 一起使用的**数据库**(PostgreSQL、MySQL、MariaDB、SQLite 或 Microsoft SQL Server)。
- 您使用的**Prisma ORM 版本**(运行
prisma -v
以查看您的 Prisma ORM 版本)。 - 您使用的**Node.js 版本**(运行
node -v
以查看您的 Node.js 版本)。
以下是在 Bug 报告中可能出现的示例:
- 操作系统:macOS Catalina 10.15.7
- 数据库:PostgreSQL v11
- Node.js 版本:
v14.16.1
- Prisma ORM 版本
prisma : 2.22.0
@prisma/client : Not found
Current platform : darwin
Query Engine : query-engine 60cc71d884972ab4e897f0277c4b84383dddaf6c (at ../../../../../.npm/_npx/31227/lib/node_modules/prisma/node_modules/@prisma/engines/query-engine-darwin)
Migration Engine : migration-engine-cli 60cc71d884972ab4e897f0277c4b84383dddaf6c (at ../../../../../.npm/_npx/31227/lib/node_modules/prisma/node_modules/@prisma/engines/migration-engine-darwin)
Format Binary : prisma-fmt 60cc71d884972ab4e897f0277c4b84383dddaf6c (at ../../../../../.npm/_npx/31227/lib/node_modules/prisma/node_modules/@prisma/engines/prisma-fmt-darwin)
Default Engines Hash : 60cc71d884972ab4e897f0277c4b84383dddaf6c
Studio : 0.379.0
此外,您可以使用 prisma debug
命令检索调试信息。prisma debug
命令提供补充 prisma -v
命令输出的调试信息。这些信息包括用于 Prisma Client、Prisma Migrate、Prisma CLI 和 Prisma Studio 的环境变量。
prisma debug
命令适用于 5.6.0 及更高版本。如果您使用的是旧版本的 Prisma ORM,可以通过运行以下命令使用此命令:
npx prisma@latest debug
包含相关的 Prisma ORM 信息(例如 Prisma 模式、Prisma Client 查询等)
为了帮助我们重现您的问题,在 Bug 报告中包含您的 Prisma 模式非常有帮助。**在 Bug 报告中共享您的 Prisma 模式之前,请删除任何数据库凭据。**如果您确定模式的哪些部分导致了问题,请删除不相关的部分,只显示与问题相关的部分。如果您不确定,请包含您的整个模式。
如果您在使用 Prisma Client 时遇到问题,请同时包含导致问题的 Prisma Client 查询。