Open striderkein opened 2 years ago
下記の手順でエラーが抑制できた 2bb12bc
.eslintrc.js
に settings.'import/resolver'
追加パッケージ追加コマンド
yarn remove babel-core babel-plugin-module-resolver eslint-import-resolver-babel-module
まだエラーが出たり出なかったりするので↓を参考に対応しようと思ふ https://stackoverflow.com/questions/56548928/eslint-resolve-error-on-imports-using-with-path-mapping-configured-jsconfig-json
たぶん直った。 7fb6b20
lint ルール plugin:react/recommended
に含まれるルールのうち過剰なものがあったことが原因。
styles/App.css
を
.App-header {
background-color: #f00bdd;
App.jsx
からこうやって import して
import 'styles/App.css'
こうなった(正常にインポートできていること および lint エラーが出ないことを確認)。
.eslintrc.js
で下記のようにして plugin:react/recommended
を適用している。
extends: [
'plugin:react/recommended',
当該プラグインでは import/no-unresolved
ルールがオンになっているため、そのままでは 絶対パスでのインポート が lint エラーとなる。
当該 lint エラーを抑制するため、 jsconfig.json
を下記のように設定していたが、解消しなかった(エラーが出たり出なかったりする)。
{
"compilerOptions": {
"target": "es2016",
"module": "commonjs",
"baseUrl": "src", // <- ココ
"allowJs": true
},
"incrude":["src"], // <- ココ
"exclude": ["node_modules"]
}
さらに調べたところ、「そもそも (t|j)sconfig.js[on]
内では paths
はハンドルできない(しない)」らしく、react/recommended
のうち import/no-unresolved
ルールをオフにしたところ、下記を確認できた。
import/no-unresolved
が出ないことこれにより、今回の修正は適正であったと結論した。
eslint-import-resolver-jsconfig というパッケージがある。 公式 によれば下記のようにするだけで「絶対パスでのインポート」が可能となる、とのことだが…?
step-1: install 省略
step-2: .eslintrc.js[on]
を下記のように設定
"settings": {
"import/resolver": {
"jsconfig": {
"config": "jsconfig.json"
}
}
}
step-3: jsconfig.json
を下記のように設定
{
"compilerOptions": {
"baseUrl": ".",
"jsx": "react",
"paths": {
"@/*": ["./src/*"]
}
}
→ だめだった。lint エラーではなく、そもそも読み込めていない様子。
上記のパッケージ公式ページの説明によれば
I personally use it for easy eslint alias support with create-react-app and react-app-rewired + react-app-rewire-alias.
とのことなので、react-app-rewired
してからでないと機能しないのかもしれない(推測)。