Nuxt.js 3 에서 npm을 이용하여 pinia를 설치하는데 바로 오류가 출력되었습니다.
에러문구
code ERESOLVE ERESOLVE could not resolve while resolving: undefined@undefined ....
✔ 해결방법부터...!
//package.json"overrides": {
"vue": "latest"
},
이에 해당하는 내용을 추가해주시고, npm 을 이용하여 pinia를 재설치해주시면 됩니다!
설치 성공!
✔ 서사
이번엔 Nuxt.js 3 에서 store 를 사용해보고자 pinia를 사용하게 되었습니다. 기존 Vue.js3 프로젝트에서는 그냥 vueStore를 사용했었는데, 그때 알게된 store 대체 라이브러리 PINIA🍈이번에는 사용해보자, 라고 생각해서 설치를 시작해보았습니다.
그리고 등장하게된 위의 에러.
예전에도 그렇고 이것과 유사하게 생긴 에러가 자주 등장하였었는데, 해결을 못하고 프로젝트를 지우곤 했었습니다 😢
그런데 우연찮게 Pinia공식 문서에서 이에 대한 문구가 살짝 있는게 보이더라구요? (뭐지.. 다른데도 있나?)
// /pages/index.vue
<template>
<div>
this is index view from pages
</div>
</template>
/pages/index.vue 라는 파일이 있을 때 app.vue의 NuxtPage 가 /pages/index.vue 가 되는 것 입니다.
root 경로 확인
✔ Vue.js3 와 Nuxt.js 의 차이점
일반 Vue 프로젝트에서는
1) main.js - route 사용 선언 2) App.vue - RouteLink, RouteView 로 작성
반면에 Nuxt 에서는 조금 다르더라구요.
처음에는 NuxtPage 말고 Nuxt 태그만 작성했다가 페이지 출력이 되지 않아서 왜 자꾸 안되지??? (여러 기술 블로그를 염탐했을 때) 하다가, 아래의 Nuxt.js3 강의를 올려주신 익숙하신 Vue 유튜버 링크(맨 아래 링크 첨부)에 들어가 빠르게 감아서 NuxtLink 부분만 보고 고치게되었습니다.
✔ 조금 더 나아가기 🚀
그렇다면 /pages/directory/directory/... 이런식으로 하위 폴더가 있을 때는 어떻게 해야할지 잠깐 생각해보았고,
Nuxt 프로젝트 특유의 경로 자동 감지를 생각하게 되어, 간단하게 구현하였습니다.
/pages/inside/insidePage.vue/app.vue
이렇게 슬래쉬로 하위 디렉터리 구분을 할 수 있었습니다.
😎 마치며
왜 이런 간단한 것 하나조차 Vue.js 프로젝트와 달라서 이렇게 애를 먹이는 것인지,,, 하나씩 그래서 설정하고 확인하고... 라우팅까지 신경쓰면서 살고 있네요. 기존에는 1분 걸릴게 Nuxt로 하니 10분도 넘게 찾고 있었네요.
어제는 프로젝트 만들고 띄우지도 못해서ㅋㅋㅋㅋ 지웠다가 새로운 프로젝트 생성하고 난리였습니다.
1) reactive value(ref) 로 text 값을 선언 (변경할 수 있게 input으로 v-model 처리 가능) 2) useClipboard 함수를 toClipboard 상수에 할당 3) toClipboard 내 파라미터로 text 값을 넣어준다. 4) 복사 완료!
Vue.js3 프로젝트에서 프로젝트를 git에서 pull 받아 npm i 를 통해 package.json 내부 내용을 다운로드 하였을 때 발생한 오류입니다.
npm ERR! code ERESOLVE npm ERR! ERESOLVE could not resolve npm ERR! npm ERR! While resolving: @vue/eslint-config-standard@6.1.0 npm ERR! Found: eslint-plugin-vue@8.7.1 npm ERR! node_modules/eslint-plugin-vue npm ERR! dev eslint-plugin-vue@"^8.0.3" from the root project npm ERR! npm ERR! Could not resolve dependency: npm ERR! peer eslint-plugin-vue@"^7.0.0" from @vue/eslint-config-standard@6.1.0 npm ERR! node_modules/@vue/eslint-config-standard npm ERR! dev @vue/eslint-config-standard@"^6.1.0" from the root project npm ERR! npm ERR! Conflicting peer dependency: eslint-plugin-vue@7.20.0 npm ERR! node_modules/eslint-plugin-vue npm ERR! peer eslint-plugin-vue@"^7.0.0" from @vue/eslint-config-standard@6.1.0 npm ERR! node_modules/@vue/eslint-config-standard npm ERR! dev @vue/eslint-config-standard@"^6.1.0" from the root project npm ERR! npm ERR! Fix the upstream dependency conflict, or retry npm ERR! this command with --force or --legacy-peer-deps npm ERR! to accept an incorrect (and potentially broken) dependency resolution.
에러 내용
✅ 에러 해결
npm에서 설명한 내용처럼, eslint-plugin-vue 의 버전이 npm resolve를 할 때 충돌한 것 같아 eslint의 버전을 7.20.0으로 낮추었습니다.
Vue.js 혹은 React.js (프론트 프레임워크) 에서 카카오로그인을 구현하려고 합니다. 그런데 401 에러가 자꾸 뜨면서 코드 값을 줬는데도 토큰을 내뱉지 않더라구요. 그래서 찾아보다가 KakaoDeveloper 에서 작성된 내용중에 저와 같은 케이스가 있는지 여러 사례들을 확인할 수 있었습니다. + 어떤 블로그를 보면서 진행하고있었는데, 거기서는 code만 보내는 걸로 해서 계속 나오는 에러였습니다. + axios를 사용하고있었는데, 지속적인 오류가 출력되어 성공하지 못하고 fetch 방식으로 변경하였습니다.
✔ 사전 환경 체크!
- Backend(Spring)을 거치지 않고 JS 프론트 프레임워크 (Vue.js, React.js) 에서 전부 처리하려고 합니다. - 현재는 2단계(token가져오기)입니다. (1단계는 code를 가져오는 단계입니다.) - 결과 데이터로 [token_type, access_token...] 을 얻어옵니다.
기존 영상(RemixTutorial 영상)을 참고하여 리스트를 출력해보았습니다. (대신 하나 추가해서 따라해봤어요.)
data내용 간단요약
Remix 에서 데이터를 컴포넌트에 불러오는 방식을 위와같이 합니다.
저 loader 함수는 클라이언트가 볼 수 없는 함수가 됩니다. ==> remix의 장점
1) useLoaderData 라는 remix 훅을 import 합니다. 2) loader 라는 이름의 함수를 생성하여 그 내부에서 데이터를 불러옵니다. (async await 부분) 3) LoaderData 라는 형식을 선언해줍니다. (type LoaderData) 4) loader 함수 내에서 LoaderData 타입으로 데이터를 반환한다고 말합니다. (--- json 이라는 라이브러리를 import 합니다.) 5) 데이터를 호출할 때 useLoaderData 함수를 LoaderData 형식으로 선언한다고 합니다.
엄청 왔다갔다 했네요. 이제 다 왔습니다. 데이터만 뿌려주면 되네요.
map 이용하여 데이터를 loop 돌리도록 하겠습니다.
사이드 프로젝트를 하게되어 remix, react.js, typescript를 하게되었는데... 뭔소린지 하나도 모르겠어서 열심히 공부중입니다.....