VS代码(适用于Zod)中的TypeScript自动完成速度慢

dm7nw8vv  于 2022-12-24  发布在  TypeScript
关注(0)|答案(1)|浏览(227)

我在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

这是一个正常的行为吗?有人知道为什么会发生这种情况吗?如果我至少能理解为什么要花这么长时间,那就太好了。这真的很令人沮丧,任何帮助都是感激的,提前感谢!

7cwmlq89

7cwmlq891#

zod@3.20.2导致此问题,降级到3.19.1已修复此问题。

相关问题