跳至主要内容

创建 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 脚本,它创建两个具有相同 emailUser 记录。

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 具有相同 emailuser2 时出现异常,因为这违反了在 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 查询。