网站搜索

reactjs - 使用 TypeScript 的 Storybook 不将 tsx 文件识别为 TypeScript 文件 - '解析错误:缺少分号'


我就是不明白为什么会发生这种事,我尝试修复它几周,最终还是在我的项目中回到了 JavaScript。

这是重现该错误的分支。这是完整的项目。在 ./examples 目录下,你会看到一个使用 React-React-App、TypeScript 和 Storybook 运行的示例应用。在里面你会看到 src/stories/Xarrow.stories.tsx 文件,当运行 yarn storybook 时,会抛出 解析错误:缺少分号。,就像我尝试在 JavaScript 文件中放置 TypeScript 时一样。

我正在使用 Storybook v6.2.9,自 v6.0.2 测试版起,它应该已经开箱支持 TypeScript

这里有一个用于快速预览的 gitpod:https://gitpod.io/#https://github.com/Eliav2/react-xarrows/blob/storybook-typescript-bug 等到依赖安装完成(你将会在 :3000 看到示例预览弹出)。然后打开新的终端,cd ./example 并运行 yarn storybook。你将会看到完全相同的错误。

这个问题已经存在几周了,我不太确定原因。

有什么想法吗?我已经尝试过删除并重新安装storybook,但这没有用。

笔记:

  • 由于 babel-loader 和 react-scripts 之间的依赖冲突,我不得不使用一个技巧——在 .env 文件中设置 SKIP_PREFLIGHT_CHECK=true 来允许依赖冲突,但我并不真的知道这是否与我的问题相关。
  • 完整的项目仅包含像 package.json 和 tsconfig.json 这样的项目文件。
  • ./ 和 ./example 中都有 tsconfig.json

任何想法都将非常感激!

答案#1

这是 eslint 的问题。我在根目录有一个 .estlintrc 配置文件,但它不适合这个演示项目。

我更新了 .eslintrc 文件以支持 TypeScript(如这里所解释的),我使用后错误消失了。

{
  "parser": "@typescript-eslint/parser",
  "plugins": [
    "import",
    "@typescript-eslint"
  ],
  "rules": {
    // turn on errors for missing imports
    "import/no-unresolved": "error"
  },
  "settings": {
    "import/parsers": {
      "@typescript-eslint/parser": [
        ".ts",
        ".tsx"
      ]
    },
    "import/resolver": {
      "typescript": {
        "alwaysTryTypes": true
        // always try to resolve types under `<root>@types` directory even it doesn't contain any source code, like `@types/unist`
      },
      "node": {
        "extensions": [".js", ".jsx", ".ts", ".tsx"]
      }
    }
  },
  "parserOptions": {
    "ecmaVersion": 2021
  },
  "env": {
    "es6": true
  },
  "extends": [
    "eslint:recommended",
    "plugin:@typescript-eslint/eslint-recommended",
    "plugin:@typescript-eslint/recommended"
  ]
}