1. ホーム
  2. typescript

Visual Studio Codeでcreate-react-appのjsx値として "react-jsx "を使用した場合の問題点

2023-09-17 19:01:42

質問

VSCodeの以下のエラーに悩んでいます。

Argument for '--jsx' option must be: 'preserve', 'react-native', 'react'

したがって、react-scripts (create-react-app) では、自動的に jsx のキーを react-jsx の値に変換する必要があります。 react の値は動作するようです。

実際、コードは完全に動作し、私が望むページを表示しますが、IDEはエラーとしてあらゆるものに下線を引き、こう言っています。

Cannot use JSX unless the '--jsx' flag is provided.

以下は私のtsconfig.jsonです。

{
  "compilerOptions": {
    "target": "es5",
    "lib": [
      "dom",
      "dom.iterable",
      "esnext"
    ],
    "allowJs": true,
    "skipLibCheck": true,
    "esModuleInterop": true,
    "allowSyntheticDefaultImports": true,
    "strict": true,
    "forceConsistentCasingInFileNames": true,
    "noFallthroughCasesInSwitch": true,
    "module": "esnext",
    "moduleResolution": "node",
    "resolveJsonModule": true,
    "isolatedModules": true,
    "noEmit": true,
    "jsx": "react-jsx"
  },
  "include": [
    "src"
  ]
}


と、私のpackage.json(create-react-appで提供されるデフォルトのもの+パッケージが更新されたもの) :

{
  "name": "front-office",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "@testing-library/jest-dom": "^5.11.6",
    "@testing-library/react": "^11.2.2",
    "@testing-library/user-event": "^12.2.2",
    "@types/jest": "^26.0.15",
    "@types/node": "^14.14.9",
    "@types/react": "^17.0.0",
    "@types/react-dom": "^17.0.0",
    "bootstrap": "^4.5.3",
    "react": "^17.0.1",
    "react-bootstrap": "^1.4.0",
    "react-dom": "^17.0.1",
    "react-scripts": "4.0.1",
    "typescript": "^4.1.2",
    "web-vitals": "^1.0.1"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject"
  },
  "eslintConfig": {
    "extends": [
      "react-app",
      "react-app/jest"
    ]
  },
  "browserslist": {
    "production": [
      ">0.2%",
      "not dead",
      "not op_mini all"
    ],
    "development": [
      "last 1 chrome version",
      "last 1 firefox version",
      "last 1 safari version"
    ]
  }
}


最新版のTypescriptを使用しており、すべてのパッケージを更新した上で ncu ですべてのパッケージを更新し、VSCodeを閉じたり開いたりしましたが(tsconfigで時々動作します!)、何も解決していないようです。

VSCode の問題であることは間違いないのですが、それを解決する方法についてアイデアが尽きています。

誰かアイデアはありませんか?

編集する

上記の手順で、VSCodeがまだ"を表示している場合。 -jsx というエラーが表示される場合は、「TypeScript God」エクステンション(および問題が発生しなくなるまでその他のTSエクステンション)を無効にしていることを確認してください。

どのように解決するのですか?

VSCodeのTypescript版では、create-react-appがデフォルトで使用している最新のbabel機能を使用していないためです。

あなたは ワークスペースのバージョンのTypescriptを使用するようにVS Codeを変更することができます。 で、この問題を解決できます。

TypeScript または JavaScript ファイルを開き、ステータスバーの TypeScript のバージョン番号をクリックします。メッセージボックスが表示され、VS Codeが使用するTypeScriptのバージョンを尋ねられます。

Use Workspace Version"を選択すると、より新しいCreate React AppのTypeScriptバージョンが使用されます。