TypeScriptで Cannot use JSX unless the '--jsx' flag is provided.エラーを解消したい
Q&A
Closed
解決したいこと
Next/Reactで作成したファイルをTypeScript化している序盤で
Cannot use JSX unless the '--jsx' flag is provided.
というエラーが出てしまいます。
どうやらTypeScriptがJSXを正しく認識するための設定が不足しているようなのですが、tsconfig.jsonの記述のどこに誤りがあるのかわかりません。
何かヒント、もしくは解決策をご教授いただけないでしょうか。
githubリンク
npx tsc '/Users/salt/Desktop/TsunaRhythm2/front/my-app/app/dashboard/components/RandomWord.tsx'
dashboard/components/RandomWord.tsx:33:5 - error TS17004: Cannot use JSX unless the '--jsx' flag is provided.
33 <div className="p-5 w-[5cm] h-52 bg-white shadow-custom-dark rounded-3xl flex items-center justify-center text-center">
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dashboard/components/RandomWord.tsx:34:7 - error TS17004: Cannot use JSX unless the '--jsx' flag is provided.
34 <p className="font-bold">{word}</p>
~~~~~~~~~~~~~~~~~~~~~~~~~
../node_modules/mime/dist/src/Mime.d.ts:5:5 - error TS18028: Private identifiers are only available when targeting ECMAScript 2015 and higher.
5 #private;
~~~~~~~~
Found 3 errors in 2 files.
Errors Files
2 dashboard/components/RandomWord.tsx:33
1 ../node_modules/mime/dist/src/Mime.d.ts:5
{
"compilerOptions": {
"target": "es2016",
"jsx": "preserve",
"module": "commonjs",
"esModuleInterop": true,
"forceConsistentCasingInFileNames": true,
"strict": true,
"skipLibCheck": true,
"lib": [
"dom",
"dom.iterable",
"esnext"
],
"allowJs": true,
"noEmit": true,
"incremental": true,
"moduleResolution": "node",
"resolveJsonModule": true,
"isolatedModules": true,
"plugins": [
{
"name": "next"
}
],
"baseUrl": ".", // 追加
"paths": { // 追加
"@/*": ["./*"]
}
},
"include": [
"next-env.d.ts",
".next/types/**/*.ts",
"**/*.ts",
"**/*.tsx"
],
"exclude": [
"node_modules"
]
}
import * as React from "react";
const RandomWord: React.FC = () => {
// 静的なランダムメッセージの配列
const randomWords: string[] = [
"自分を信じて、一歩一歩進んでいこう。",
"小さな進歩も大きな成果につながる。",
"休むことも大切。リフレッシュしてまた頑張ろう。",
"努力は必ず報われる。諦めないで。",
"夢に向かって進むあなたを応援しているよ。",
"自分のペースで進んで大丈夫。",
"失敗は成長のチャンス。前向きに捉えよう。",
"焦らず、ゆっくり進んでいこう。",
"自分を大切にしながら頑張ろう。",
"いつも頑張っている自分を褒めてあげよう。",
"周りのサポートを受け入れることも大事。",
"自分の夢を信じて、前に進もう。",
"休むことは怠けることじゃないよ。",
"小さな成功も大切に喜ぼう。",
"あなたの努力は必ず実を結ぶ。",
"自分の力を信じて、前進しよう。",
"焦らずに、マイペースで進んでいこう。",
"他人と比べず、自分のペースを大事にしよう。",
"心配事があれば、誰かに話してみよう。",
"リフレッシュして、新しい気持ちで頑張ろう。",
];
// ランダムなインデックスを生成
const randomIndex: number = Math.floor(Math.random() * randomWords.length);
const word: string = randomWords[randomIndex];
return (
<div className="p-5 w-[5cm] h-52 bg-white shadow-custom-dark rounded-3xl flex items-center justify-center text-center">
<p className="font-bold">{word}</p>
</div>
);
};
export default RandomWord;
自分で試したこと
①エラー文である「Cannot use JSX unless the '--jsx' flag is provided.」をベタ貼りして出てきた「TSでReactの環境構築中に出た "error Cannot use JSX unless the '--jsx' flag is provided." を解消する」という記事を参照して下記のように記述を変えて試してみましたが変化ありませんでした。
https://qiita.com/hrism/items/3dff3f7822bb36e414a8
~
"target": "es2016",
"jsx": "preserve",
~
~
"target": "ES6",
"jsx": "react-jsx",
~
②他にも
を参考に
"jsx": "react",
としてみても変化ありません。
③現状の設定である
"jsx": "preserve",
も下記を参考にした結果ですが、これもダメでした。
④さらに下記の記事も参考にして
command + shift + p
から
typescript select
と検索してTypeScriptのバージョン選択→VSコードのバージョンを使用5.3.2としてみましたがこちらでも変化ありませんでした。
改めて何かヒントか解決策をご教授いただきたく存じます。
よろしくお願い申し上げます。🙇♂️