致谢
- 我承认,使用此模板的问题可能会在维护者的酌情决定下不经进一步解释而关闭。
评论
我不知道这个错误是如何发生的,但每当我打开这个特定的点文件时,错误信息就会出现。
Error: tsserver: 1: <semantic> TypeScript Server Error (5.2.2)
Debug Failure. False expression.
Error: Debug Failure. False expression.
at first (/Users/innei/git/innei-repo/MetaMuse/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/lib/tsserver.js:3063:9)
at getArgumentArityError (/Users/innei/git/innei-repo/MetaMuse/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/lib/tsserver.js:75247:19)
at resolveCall (/Users/innei/git/innei-repo/MetaMuse/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/lib/tsserver.js:75464:27)
at resolveCallExpression (/Users/innei/git/innei-repo/MetaMuse/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/lib/tsserver.js:75772:12)
at resolveSignature (/Users/innei/git/innei-repo/MetaMuse/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/lib/tsserver.js:76155:16)
at getResolvedSignature (/Users/innei/git/innei-repo/MetaMuse/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/lib/tsserver.js:76175:18)
at checkCallExpression (/Users/innei/git/innei-repo/MetaMuse/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/lib/tsserver.js:76287:23)
at checkExpressionWorker (/Users/innei/git/innei-repo/MetaMuse/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/lib/tsserver.js:79464:16)
at checkExpression (/Users/innei/git/innei-repo/MetaMuse/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/lib/tsserver.js:79375:32)
at checkExpressionWithContextualType (/Users/innei/git/innei-repo/MetaMuse/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/lib/tsserver.js:79024:18)
at inferTypeArguments (/Users/innei/git/innei-repo/MetaMuse/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/lib/tsserver.js:74738:27)
at inferSignatureInstantiationForOverloadFailure (/Users/innei/git/innei-repo/MetaMuse/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/lib/tsserver.js:75678:31)
at pickLongestCandidateSignature (/Users/innei/git/innei-repo/MetaMuse/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/lib/tsserver.js:75657:168)
at getCandidateForOverloadFailure (/Users/innei/git/innei-repo/MetaMuse/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/lib/tsserver.js:75599:109)
at resolveCall (/Users/innei/git/innei-repo/MetaMuse/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/lib/tsserver.js:75357:14)
at resolveCallExpression (/Users/innei/git/innei-repo/MetaMuse/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/lib/tsserver.js:75772:12)
at resolveSignature (/Users/innei/git/innei-repo/MetaMuse/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/lib/tsserver.js:76155:16)
at getResolvedSignature (/Users/innei/git/innei-repo/MetaMuse/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/lib/tsserver.js:76175:18)
at getResolvedSignatureWorker (/Users/innei/git/innei-repo/MetaMuse/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/lib/tsserver.js:48231:34)
at /Users/innei/git/innei-repo/MetaMuse/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/lib/tsserver.js:47992:135
at runWithoutResolvedSignatureCaching (/Users/innei/git/innei-repo/MetaMuse/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/lib/tsserver.js:48201:20)
at Object.getResolvedSignatureForSignatureHelp (/Users/innei/git/innei-repo/MetaMuse/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/lib/tsserver.js:47992:88)
at visitCallOrNewExpression (/Users/innei/git/innei-repo/MetaMuse/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/lib/tsserver.js:164835:31)
at visitor (/Users/innei/git/innei-repo/MetaMuse/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/lib/tsserver.js:164749:7)
at visitNode2 (/Users/innei/git/innei-repo/MetaMuse/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/lib/tsserver.js:30083:18)
at forEachChildInAwaitExpression (/Users/innei/git/innei-repo/MetaMuse/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/lib/tsserver.js:30275:12)
at forEachChild (/Users/innei/git/innei-repo/MetaMuse/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/lib/tsserver.js:30600:35)
at visitor (/Users/innei/git/innei-repo/MetaMuse/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/lib/tsserver.js:164758:12)
at visitNode2 (/Users/innei/git/innei-repo/MetaMuse/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/lib/tsserver.js:30083:18)
at forEachChildInExpressionStatement (/Users/innei/git/innei-repo/MetaMuse/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/lib/tsserver.js:30313:12)
at forEachChild (/Users/innei/git/innei-repo/MetaMuse/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/lib/tsserver.js:30600:35)
at visitor (/Users/innei/git/innei-repo/MetaMuse/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/lib/tsserver.js:164758:12)
at visitNodes (/Users/innei/git/innei-repo/MetaMuse/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/lib/tsserver.js:30091:22)
at forEachChildInBlock (/Users/innei/git/innei-repo/MetaMuse/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/lib/tsserver.js:30560:10)
at forEachChild (/Users/innei/git/innei-repo/MetaMuse/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/lib/tsserver.js:30600:35)
at visitor (/Users/innei/git/innei-repo/MetaMuse/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/lib/tsserver.js:164758:12)
at visitNode2 (/Users/innei/git/innei-repo/MetaMuse/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/lib/tsserver.js:30083:18)
at forEachChildInIfStatement (/Users/innei/git/innei-repo/MetaMuse/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/lib/tsserver.js:30316:51)
at forEachChild (/Users/innei/git/innei-repo/MetaMuse/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/lib/tsserver.js:30600:35)
at visitor (/Users/innei/git/innei-repo/MetaMuse/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/lib/tsserver.js:164758:12)
at visitNodes (/Users/innei/git/innei-repo/MetaMuse/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/lib/tsserver.js:30091:22)
at forEachChildInBlock (/Users/innei/git/innei-repo/MetaMuse/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/lib/tsserver.js:30560:10)
at forEachChild (/Users/innei/git/innei-repo/MetaMuse/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/lib/tsserver.js:30600:35)
at visitor (/Users/innei/git/innei-repo/MetaMuse/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/lib/tsserver.js:164758:12)
at visitNode2 (/Users/innei/git/innei-repo/MetaMuse/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/lib/tsserver.js:30083:18)
at forEachChildInArrowFunction (/Users/innei/git/innei-repo/MetaMuse/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/lib/tsserver.js:30183:243)
at forEachChild (/Users/innei/git/innei-repo/MetaMuse/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/lib/tsserver.js:30600:35)
at visitor (/Users/innei/git/innei-repo/MetaMuse/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/lib/tsserver.js:164758:12)
at visitNodes (/Users/innei/git/innei-repo/MetaMuse/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/lib/tsserver.js:30091:22)
at forEachChildInCallOrNewExpression (/Users/innei/git/innei-repo/MetaMuse/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/lib/tsserver.js:30557:99)
at forEachChild (/Users/innei/git/innei-repo/MetaMuse/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/lib/tsserver.js:30600:35)
at visitor (/Users/innei/git/innei-repo/MetaMuse/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/lib/tsserver.js:164758:12)
at visitNode2 (/Users/innei/git/innei-repo/MetaMuse/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/lib/tsserver.js:30083:18)
at forEachChildInAwaitExpression (/Users/innei/git/innei-repo/MetaMuse/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/lib/tsserver.js:30275:12)
at forEachChild (/Users/innei/git/innei-repo/MetaMuse/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/lib/tsserver.js:30600:35)
at visitor (/Users/innei/git/innei-repo/MetaMuse/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/lib/tsserver.js:164758:12)
at visitNode2 (/Users/innei/git/innei-repo/MetaMuse/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/lib/tsserver.js:30083:18)
at forEachChildInExpressionStatement (/Users/innei/git/innei-repo/MetaMuse/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/lib/tsserver.js:30313:12)
at forEachChild (/Users/innei/git/innei-repo/MetaMuse/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/lib/tsserver.js:30600:35)
at visitor (/Users/innei/git/innei-repo/MetaMuse/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/lib/tsserver.js:164758:12)
at visitNodes (/Users/innei/git/innei-repo/MetaMuse/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/lib/tsserver.js:30091:22)
at forEachChildInBlock (/Users/innei/git/innei-repo/MetaMuse/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/lib/tsserver.js:30560:10)
at forEachChild (/Users/innei/git/innei-repo/MetaMuse/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/lib/tsserver.js:30600:35)
at visitor (/Users/innei/git/innei-repo/MetaMuse/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/lib/tsserver.js:164758:12)
at visitNode2 (/Users/innei/git/innei-repo/MetaMuse/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/lib/tsserver.js:30083:18)
at forEachChildInMethodDeclaration (/Users/innei/git/innei-repo/MetaMuse/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/lib/tsserver.js:30162:354)
at forEachChild (/Users/innei/git/innei-repo/MetaMuse/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/lib/tsserver.js:30600:35)
at visitor (/Users/innei/git/innei-repo/MetaMuse/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/lib/tsserver.js:164758:12)
at visitNodes (/Users/innei/git/innei-repo/MetaMuse/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/lib/tsserver.js:30091:22)
at forEachChildInClassDeclarationOrExpression (/Users/innei/git/innei-repo/MetaMuse/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/lib/tsserver.js:30566:195)
at forEachChild (/Users/innei/git/innei-repo/MetaMuse/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/lib/tsserver.js:30600:35)
at visitor (/Users/innei/git/innei-repo/MetaMuse/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/lib/tsserver.js:164758:12)
at visitNodes (/Users/innei/git/innei-repo/MetaMuse/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/lib/tsserver.js:30091:22)
at forEachChildInSourceFile (/Users/innei/git/innei-repo/MetaMuse/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/lib/tsserver.js:30304:12)
at forEachChild (/Users/innei/git/innei-repo/MetaMuse/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/lib/tsserver.js:30600:35)
at visitor (/Users/innei/git/innei-repo/MetaMuse/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/lib/tsserver.js:164758:12)
at Object.provideInlayHints (/Users/innei/git/innei-repo/MetaMuse/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/lib/tsserver.js:164719:3)
at Object.provideInlayHints2 [as provideInlayHints] (/Users/innei/git/innei-repo/MetaMuse/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/lib/tsserver.js:144858:34)
at IpcIOSession.provideInlayHints (/Users/innei/git/innei-repo/MetaMuse/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/lib/tsserver.js:183663:48)
at provideInlayHints (/Users/innei/git/innei-repo/MetaMuse/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/lib/tsserver.js:182825:43)
at /Users/innei/git/innei-repo/MetaMuse/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/lib/tsserver.js:184838:69
at IpcIOSession.executeWithRequestId (/Users/innei/git/innei-repo/MetaMuse/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/lib/tsserver.js:184830:14)
at IpcIOSession.executeCommand (/Users/innei/git/innei-repo/MetaMuse/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/lib/tsserver.js:184838:29)
at IpcIOSession.onMessage (/Users/innei/git/innei-repo/MetaMuse/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/lib/tsserver.js:184880:51)
at process.<anonymous> (/Users/innei/git/innei-repo/MetaMuse/node_modules/.pnpm/typescript@5.2.2/node_modules/typescript/lib/tsserver.js:186461:14)
at process.emit (node:events:514:28)
at emit (node:internal/child_process:937:14)
at process.processTicksAndRejections (node:internal/process/task_queues:83:21)
每次我用源代码打开这个文件时:
import { BizException } from '@core/common/exceptions/biz.exception'
import { BusinessEvents } from '@core/constants/business-event.constant'
import { ErrorCodeEnum } from '@core/constants/error-code.constant'
import { DatabaseService } from '@core/processors/database/database.service'
import { EventManagerService } from '@core/processors/helper/helper.event.service'
import { resourceNotFoundWrapper } from '@core/shared/utils/prisma.util'
import { isDefined } from '@core/shared/utils/validator.util'
import { Injectable } from '@nestjs/common'
import { Post, Prisma } from '@prisma/client'
import { PostDto, PostPagerDto, PostPatchDto } from './post.dto'
import { PostIncluded } from './post.protect'
@Injectable()
export class PostService {
constructor(
private readonly db: DatabaseService,
private readonly eventService: EventManagerService,
) {}
async create(dto: PostDto) {
const { slug, categoryId } = dto
const exist = await this.db.prisma.post.findUnique({
where: {
slug_categoryId: {
slug,
categoryId,
},
},
select: { id: true },
})
if (exist) {
throw new BizException(ErrorCodeEnum.PostExist)
}
const model = await this.db.prisma.$transaction(async (prisma) => {
const hasCategory = await this.db.prisma.category.exists({
where: {
id: categoryId,
},
})
if (!hasCategory) {
throw new BizException(ErrorCodeEnum.CategoryNotFound)
}
const newPost = await prisma.post.create({
data: {
...dto,
related: { connect: dto.related?.map((id) => ({ id })) } || [],
},
include: {
category: true,
},
})
return newPost
})
if (dto.related?.length) {
await this.relateEachOther(model.id, dto.related)
}
if (model.pin) {
await this.togglePin(model.id, true)
}
this.eventService.event(BusinessEvents.POST_CREATE, model)
return model
}
private async relateEachOther(postId: string, relatedIds: string[]) {
await this.db.prisma.$transaction(
relatedIds.map((id) =>
this.db.prisma.post.update({
where: {
id,
},
data: {
related: {
connect: {
id: postId,
},
},
},
}),
),
)
}
private togglePin(id: string, pin: boolean) {
if (!pin) {
return this.db.prisma.post.update({
where: {
id,
},
data: {
pin: false,
},
})
}
return this.db.prisma.$transaction([
this.db.prisma.post.update({
where: {
id,
},
data: {
pin: true,
},
}),
this.db.prisma.post.updateMany({
where: {
NOT: { id },
},
data: { pin: false },
}),
])
}
async paginatePosts(
options: PostPagerDto,
filter: Prisma.PostWhereInput = {},
) {
const {
select,
size = 10,
page = 1,
sortBy = 'created',
sortOrder = -1,
} = options
const nextSortOrder = {
['-1']: 'desc',
[1]: 'asc',
}[sortOrder.toString()]
const data = await this.db.prisma.post.paginate(
{
include: PostIncluded,
where: filter,
orderBy: [
{
pin: 'desc',
},
{
[sortBy]: nextSortOrder,
},
],
},
{
size,
page,
},
)
if (select?.length) {
const nextData = [] as typeof data.data
for (const item of data.data) {
if (!item) continue
const currentItem = {} as any
for (const key of select) {
currentItem[key] = item[key]
}
nextData.push(currentItem)
}
data.data = nextData
}
return data
}
async getLastPost() {
return this.db.prisma.post.findFirst({
orderBy: {
created: 'desc',
},
include: PostIncluded,
})
}
async getPostById(id: string) {
return this.db.prisma.post
.findUniqueOrThrow({
where: {
id,
},
include: PostIncluded,
})
.catch(
resourceNotFoundWrapper(new BizException(ErrorCodeEnum.PostNotFound)),
)
}
async getCategoryBySlug(slug: string) {
return this.db.prisma.category.findUnique({ where: { slug } })
}
async getPostBySlug(slug: string, categorySlug: string) {
const category = await this.getCategoryBySlug(categorySlug)
if (!category) {
throw new BizException(ErrorCodeEnum.CategoryNotFound)
}
return this.db.prisma.post.findUnique({
where: {
slug_categoryId: {
slug,
categoryId: category.id,
},
},
include: PostIncluded,
})
}
async updateById(id: string, data: PostPatchDto) {
await this.db.prisma.$transaction(async (prisma) => {
const originPost = await prisma.post.findUnique({
where: { id },
select: {
categoryId: true,
modified: true,
},
})
if (!originPost) {
throw new BizException(ErrorCodeEnum.PostNotFound)
}
const { categoryId } = data
if (categoryId && categoryId !== originPost.categoryId) {
await prisma.category
.findUniqueOrThrow({
where: {
id: categoryId,
},
})
.catch(
resourceNotFoundWrapper(
new BizException(ErrorCodeEnum.CategoryNotFound),
),
)
}
const updatedData: Partial<Post> = {
...data,
}
// @ts-expect-error
delete updatedData.related
if ([data.text, data.title, data.slug].some((i) => isDefined(i))) {
const now = new Date()
updatedData.modified = now
}
await prisma.post.update({
where: {
id,
},
data: updatedData,
})
})
// 有关联文章
const related = data.related?.filter((i) => i !== id) || []
if (related.length) {
await this.relateEachOther(id, related)
}
}
}
3条答案
按热度按时间blmhpbnm1#
你能将这个隔离在某个独立的仓库或TS playground中吗?
ezykj2lf2#
你能将这个隔离在某个独立的仓库或TS playground中吗?我不知道如何最小化地复现它。目前,我能确认的是,每当我打开这个指定的文件时,就会发生错误。
lvmkulzt3#
你可以尝试二分法来重建这个项目,使用你减少的部分。首先从这个文件中删除一些函数/行,观察问题是否消失。在问题消失之前恢复刚刚删除的内容,并尝试删除文件的其他部分-重复这个过程,直到你尽可能地减少了这个问题。同样的处理过程也可以应用于这个文件的依赖项(你在它里面引用的所有导入)。