본문 바로가기
나도 공부한다/삽질

Git: Warnig: React version was set to "detect" in eslint-plugin-settion, but the react package is not install. Assuming latest React version for linting

by 꾸빵이 2022. 11. 10.

상황

node.js 환경에서 eslint를 설치한 상태이다. 변경된 파일을 commit 하려는데 다음과 같은 오류가 떴다. eslint-plugin-react 세팅에서 react version이 detect로 설정 되어있는데 너는 리액트 패키지가 설치되어있지 않다?? 뭐 이런 말인듯ㅎ 일단 관련 코드를 찾아봤다.

 

참고로 이 코드는 node_modules > eslint-plugin-react > lib > util > version.js 파일에서 찾을 수 있다.

모듈이 없는 경우에 위와 같은 경고문을 띄운다. 사실 백엔드쪽을 잘 몰라서 resolve.sync 이런게 뭔지 모르겠다. 아마 리액트가 정상적으로 깔려있다면 cachedDetectedReactVersion 변수에 리액트 버전값이 들어가고 없는 경우엔 경고를 띄우고 변수값이 디폴트 버전인 999.999.999로 바뀌는것 같다... 자세히 아는 사람은 댓글을 남겨주길 바란다.(제발) 이 프로젝트에서 리액트가 필요 없기 때문에 설치하려는 노력은 안 해봤다.

 

 

해결

node_modules->eslint -> eslint-config-cryingbot->.eslintrc.js 파일에 다음과 같은 코드를 추가해줬다. 각자 쓰고 있는 eslint-config 폴더에 들어가서 .eslintrc.js 파일을 찾으면 된다. 에어비앤비 eslint 규칙을 따른다고 하면 eslint-config-airbnb 이런식으로 써있을 것이다. version: "latest" 이렇게 하는게 더 좋은 방법이라고 하는데, 나는 latest로 하면

`Warning: React version specified in eslint-plugin-react-settings must be a valid semver version, or "detect"; got “latest
 
라는 오류가 떴다. 이 오류와 관련된 코드도 version.js 파일에서 찾을 수 있다. 
settings: {
    react: {
      version: "999.999.999"
    }
  },

찾아보니 package.json 파일에 이 코드를 추가하는 방법도 있다.

"eslintConfig": {
		"settings": {
			"react": {
				"version": "999.999.999"
			}
		}
	}

 

 

참고

https://github.com/DRD4-7R/eslint-config-7r-building/issues/1