🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
ESLint

ESLintは、JavaScriptのための構文チェックツール。全検証ルールを自由に on/offでき、独自のプロジェクトに合わせたカスタムルールを容易に設定することが可能。公開されている様々なプラグインを組み込んで使用することもできます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

Q&A

解決済

2回答

889閲覧

TypeScriptとPrettierの競合エラーについて

mt816engr

総合スコア2

ESLint

ESLintは、JavaScriptのための構文チェックツール。全検証ルールを自由に on/offでき、独自のプロジェクトに合わせたカスタムルールを容易に設定することが可能。公開されている様々なプラグインを組み込んで使用することもできます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

0グッド

0クリップ

投稿2021/02/15 10:36

編集2021/02/15 10:38

前提・実現したいこと

現在React+TypeScriptの環境に、PrettierとESLintを導入しているのですが、
PrettierとTypeScriptが競合エラーを起こし正常に動作しない状況となっています。

以下該当箇所

react

1const [result, setResult] = useState<any>({}) 2↓自動補完後 3const [result, setResult] = useState < any > {}

このように、Prettierの自動補完によってスペースができ、処理自体が正常に動かなくなってしまいます。

こちらの解決方法をご存知の方いましたらご教授いただけますと幸いです。
初めての投稿のため至らない点多いとは思いますが、何卒よろしくお願いいたします。

該当のソースコード

.eslintrc.js

javascript

1module.exports = { 2 env: { 3 node: true, 4 es6: true, 5 }, 6 extends: [ 7 'standard', 8 'prettier/react', 9 'plugin:react/recommended', 10 'plugin:react-hooks/recommended', 11 'plugin:@typescript-eslint/eslint-recommended', 12 'plugin:@typescript-eslint/recommended', 13 'plugin:prettier/recommended', 14 'prettier/@typescript-eslint', 15 ], 16 plugins: ['react-hooks', 'react', '@typescript-eslint', 'prettier'], 17 parser: '@typescript-eslint/parser', 18 parserOptions: { ecmaVersion: 2018, sourceType: 'module' }, 19 rules: { 20 'no-use-before-define': 'off', 21 'no-irregular-whitespace': 'off', 22 'react/prop-types': 'off', 23 }, 24 settings: { 25 react: { 26 version: 'detect', 27 }, 28 }, 29 overrides: [ 30 { 31 files: ['*.js'], 32 rules: { 33 '@typescript-eslint/no-var-requires': 'off', 34 '@typescript-eslint/explicit-function-return-type': 'off', 35 }, 36 }, 37 ], 38}

tsconfig.json

{ "compilerOptions": { "target": "es6", "module": "commonjs", "jsx": "react", "strict": true, "moduleResolution": "node", "esModuleInterop": true, "skipLibCheck": true, "forceConsistentCasingInFileNames": true, } }

補足情報(FW/ツールのバージョンなど)

関連パッケージ

"@typescript-eslint/eslint-plugin": "^4.15.0", "@typescript-eslint/parser": "^4.15.0", "eslint": "^7.19.0", "eslint-config-prettier": "^6.15.0", "eslint-config-standard": "^16.0.2", "eslint-plugin-import": "^2.22.1", "eslint-plugin-node": "^11.1.0", "eslint-plugin-prettier": "^3.3.1", "eslint-plugin-promise": "^4.2.1", "eslint-plugin-react": "^7.22.0", "eslint-plugin-react-hooks": "^4.2.0", "prettier": "^2.2.1", "typescript": "^3.9.7",

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mt816engr

2021/02/15 11:40

ご回答いただきありがとうございます。 上記.eslintrc.jsに設定しております。
uraway_

2021/02/15 13:32

`.eslintrc.js`の中に、 ``` files: ['*.js'], ``` とあり気になったのですが、ファイルの拡張子は確実に`.tsx`でしょうか?パーサがJavaScriptだと誤認してフォーマットをかけているような動きに見えます
mt816engr

2021/02/15 23:32

ご回答いただきありがとうございます。 overridesの記述では、jsファイルのみlint設定を制限しています。 (webpack.conig.js等でlintエラーが出てしまうため)
uraway_

2021/02/16 01:14

手元で環境を再現してみたのですが、問題は起きませんでした。エディタやIDEの設定が何か問題を起こしている可能性があります。一度、エディタから自動フォーマットする設定をオフにしたうえでeslintコマンドを実行した結果を貼ってもらえますか? また、どうしても解決できない場合はESLintとPrettierの統合をやめるのも一つの手です。現在はESLintとPrettierの統合は公式からは推奨されておらず、prettier --fixコマンドやエディタの拡張機能としてのPrettierを使うことが推奨されています。 https://prettier.io/docs/en/integrating-with-linters.html
mt816engr

2021/02/16 11:09

ご確認いただきありがとうございます。 申し訳ありません...「.prettierrc.json」に記述していた"parser":"babel"が原因で不具合を起こしていたようです。こちら削除したところ正常に動作しました。 ESLintとPrettierの統合が非推薦とのことなので、再度lint環境を見直してみたいと思います。 ご丁寧に回答下さりありがとうございました。
guest

回答2

0

自己解決

「.prettierrc.json」に記述していた"parser":"babel"の設定を省いたところ正常に動作しました。

投稿2021/02/16 11:11

mt816engr

総合スコア2

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ここらへんが不足していると思います。

eslint-plugin-prettier

ESlintとPrettierを連動させるプラグイン
https://github.com/prettier/eslint-plugin-prettier

eslint-config-prettier

ESLintと競合する設定や不備のあるルールをオフにする。簡単に言うと互換プラグインのようなもの
https://github.com/prettier/eslint-config-prettier

昔書いた設定の記事→https://v-kurore.com/TypeScript/devEnd.html

投稿2021/02/15 11:22

mosapride

総合スコア1480

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mt816engr

2021/02/15 11:41

ご回答いただきありがとうございます。 プラグインの詳細まで記述して下さり助かります。 上記既にパッケージとして導入しているのですが、 .eslintrs.jsに何か他に追記する必要はありますでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問