我在TypeScript中建立了一个简单的项目。我使用Prisma连接数据库,使用express连接HTTP服务器,使用Zod验证请求主体。我还使用eslint,它在每次保存文件时运行。在输入代码时,加载建议需要大约2 - 3秒,这变得非常烦人,对我来说这不像是一个正常的行为。
例如:加载使用Zod模式解析的对象的建议或加载Prisma客户端的建议通常需要大约2秒。我不确定这是否是严格意义上的Zod/Prisma问题,尽管我在Webstorm中打开了这个项目,但发生了同样的问题,可能速度稍快,但仍然可以看到明显的延迟。我尝试了什么,但没有成功:
- 在其他计算机上打开项目
- 禁用所有扩展
- 重新安装VS代码
- 安装较早版本的VS代码
- 使用不同版本的TypeScript编译器
示例:
- TS服务器日志**的一部分:
...
Info 277 [21:17:19.421] getCompletionData: Get current token: 0.012008000165224075
Info 278 [21:17:19.421] getCompletionData: Is inside comment: 0.028876000083982944
Info 279 [21:17:19.421] getCompletionData: Get previous token: 0.024034999776631594
Info 280 [21:17:19.421] getCompletionsAtPosition: isCompletionListBlocker: 0.131608999799937
Info 281 [21:17:21.381] getCompletionData: Semantic work: 1959.9019869999029
Info 282 [21:17:21.388] getCompletionsAtPosition: getCompletionEntriesFromSymbols: 5.953261999879032
Info 283 [21:17:21.733] IntelliCode plugin: successfully loaded model from /home/xkcm/.vscode/extensions/visualstudioexptteam.vscodeintellicode-1.2.29/dist/bundledModels/javascript_intellisense-members
...
正如您所看到的,getCompletionData
操作大约需要2秒才能完成,我还将附加我的typescript和eslint配置。
- 系统配置json**
{
"compilerOptions": {
"module": "NodeNext",
"moduleResolution": "NodeNext",
"target": "ES2015",
"sourceMap": true,
"outDir": "dist/",
"experimentalDecorators": true,
"skipLibCheck": true
},
"include": [
"./src/**/*"
]
}
- .西班牙贸易中心. cjs*
module.exports = {
extends: [
"airbnb-base",
"airbnb-typescript/base"
],
parser: "@typescript-eslint/parser",
plugins: ["@typescript-eslint"],
root: true,
ignorePatterns: [
".eslintrc.cjs",
"dist/**/*",
"node_modules/**/*"
],
parserOptions: {
project: "./tsconfig.json"
},
rules: {
"@typescript-eslint/quotes": ["error", "double"],
"curly": ["error", "all"],
"no-console": ["error", { allow: ["info", "warn", "error"] }],
"no-use-before-define": ["error", { functions: false, classes: false }],
"@typescript-eslint/brace-style": ["error", "1tbs", { allowSingleLine: false }],
"import/prefer-default-export": "off",
"max-classes-per-file": "off"
}
};
还有我在项目中的依赖项列表:
"dependencies": {
"@prisma/client": "^4.8.0",
"chalk": "4.1.2",
"dotenv": "^16.0.3",
"express": "^4.18.2",
"morgan": "^1.10.0",
"winston": "^3.8.2",
"zod": "^3.20.2"
},
"devDependencies": {
"@types/express": "^4.17.15",
"@types/lodash": "^4.14.191",
"@types/node": "^18.11.17",
"@types/winston": "^2.4.4",
"@typescript-eslint/eslint-plugin": "^5.46.1",
"@typescript-eslint/parser": "^5.46.1",
"dotenv-cli": "^6.0.0",
"eslint": "^8.30.0",
"eslint-config-airbnb-base": "^15.0.0",
"eslint-config-airbnb-typescript": "^17.0.0",
"eslint-plugin-import": "^2.26.0",
"nodemon": "^2.0.20",
"prisma": "^4.7.1",
"ts-node": "^10.9.1",
"typescript": "^4.9.4"
}
我的环境:
- VS代码:1.74.2 - 1671533413
- 类型脚本:4.9.4
- 节点:版本16.13.1
这是一个正常的行为吗?有人知道为什么会发生这种情况吗?如果我至少能理解为什么要花这么长时间,那就太好了。这真的很令人沮丧,任何帮助都是感激的,提前感谢!
- 编辑**:我注意到加载自动完成时CPU使用率达到100%,这是TypeScript问题吗?
- 编辑2**:我删除了
zod
软件包,问题似乎消失了,非常奇怪。TypeScript repo中的相关问题:https://github.com/microsoft/TypeScript/issues/45824
- 编辑2**:我删除了
- 编辑3**:我发现将
zod
软件包降级到v3.19.1
也可以修复这个问题。他们的GitHub上有一个关于v3.20.2
性能问题的问题:https://github.com/colinhacks/zod/issues/1741
- 编辑3**:我发现将
1条答案
按热度按时间7cwmlq891#
zod@3.20.2
导致此问题,降级到3.19.1
已修复此问题。