reactjs - storybook s typescriptom ne prepoznaje tsx datoteku kao typescript datoteku - 'Greška pri parsiranju: Nedostaje točka-zarez'
Jednostavno ne mogu shvatiti zašto se to dogodilo, pokušavao sam to popraviti nekoliko tjedana i samo sam se vratio na JavaScript u svojim pričama.
evo grane koja reproducira grešku. ovo je cijeli projekt. unutra u ./examples vidjet ćete demo aplikaciju koja radi s react-react-app s typescriptom i storybookom. unutra ćete vidjeti src/stories/Xarrow.stories.tsx koja pri pokretanju yarn storybook baca Parsing error: Missing semicolon. baš kao da sam pokušao staviti typescript u javascript datoteku.
Koristim Storybook v6.2.9 koji bi trebao podržavati TypeScript iz kutije od v6.0.2beta
evo gitpod za brzi pregled: https://gitpod.io/#https://github.com/Eliav2/react-xarrows/blob/storybook-typescript-bug pričekajte da instalacija ovisnosti završi (vidjet ćete primjer pregleda na :3000). zatim otvorite novi terminal i cd ./example i pokrenite yarn storybook. vidjet ćete točno iste pogreške.
Ovaj problem je prisutan već nekoliko tjedana i nisam sasvim siguran zašto.
Imaš li ideju? Već sam pokušao izbrisati i ponovno instalirati Storybook, ali to nije uspjelo.
bilješke :
- Zbog sukoba ovisnosti između babel-loader i react-scripts morao sam napraviti trik - .env datoteka s SKIP_PREFLIGHT_CHECK=true da bih omogućio sukob ovisnosti, ali zapravo ne znam je li to povezano s mojim problemom.
- cijeli projekt je uključen samo za projektne datoteke poput package.json i tsconfig.json datoteka.
- u ./ postoji tsconfig.json, kao i u ./example
Bilo kakve ideje bi bile vrlo cijenjene!
Odgovor #1
Ovo je bio problem s eslintom. Imao sam .estlintrc konfiguracijsku datoteku u korijenskom direktoriju koja nije bila prikladna za demo projekt.
Ažurirao sam .eslintrc datoteku da podržava TypeScript (kao što je objašnjeno ovdje) koju sam koristio i greška je nestala.
{
"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"
]
}
