Wyszukiwanie w witrynie

reactjs - storybook z typescript nie traktuje pliku tsx jako pliku typescript - 'Błąd analizy: Brak średnika'


Po prostu nie mogę zrozumieć, dlaczego to się stało, próbowałem to naprawić przez kilka tygodni i po prostu wróciłem do JavaScript w moich historiach.

oto gałąź, która odtwarza błąd. to jest cały projekt. w środku, w ./examples zobaczysz działającą aplikację demo z react-react-app z typescript i storybook. w środku zobaczysz src/stories/Xarrow.stories.tsx, który podczas uruchamiania yarn storybook wyrzuca Parsing error: Missing semicolon., dokładnie tak jakby próbowałem wstawić typescript do pliku javascript.

Używam Storybook w wersji 6.2.9, który miał wspierać TypeScript od razu od wersji 6.0.2 beta

oto gitpod do szybkiego podglądu: https://gitpod.io/#https://github.com/Eliav2/react-xarrows/blob/storybook-typescript-bug poczekaj, aż instalacja zależności się zakończy (zobaczysz wyskakujące okno podglądu przykładu na :3000). następnie otwórz nowy terminal i cd ./example i uruchom yarn storybook. zobaczysz dokładnie te same błędy.

Ten problem występuje od kilku tygodni i nie jestem do końca pewien, dlaczego.

Masz jakiś pomysł? Już próbowałem usunąć i ponownie zainstalować Storybook, ale to nie zadziałało.

notatki :

  • Z powodu konfliktu zależności między babel-loader a react-scripts musiałem zastosować sztuczkę - plik .env z SKIP_PREFLIGHT_CHECK=true, aby pozwolić na konflikt zależności, ale tak naprawdę nie wiem, czy to jest związane z moim problemem.
  • Cały projekt jest dołączony tylko dla plików projektowych, takich jak pliki package.json i tsconfig.json.
  • w ./ znajduje się plik tsconfig.json oraz w ./example

Wszelkie pomysły byłyby bardzo mile widziane!

Odpowiedź #1

To był problem z eslint. Miałem plik konfiguracyjny .estlintrc w katalogu głównym, który nie pasował do projektu demonstracyjnego.

Zaktualizowałem plik .eslintrc, aby obsługiwał TypeScript (tak jak wyjaśniono tutaj), którego użyłem, i błąd zniknął.

{
  "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"
  ]
}