Nuxt.js에서 URL 직접 두드릴 때 페이지가 표시되지만 nuxt-link 또는 브라우저 백에서 An error occurred가됩니다.
사건
구구했을 때 더 잡아도 좋을 것이라고 생각하면서, 전혀 기사가 히트하지 않았기 때문에 메모.
Nuxt.js에서 axios를 사용하여 API에서 데이터를 가져옵니다.
그 데이터를 바탕으로 페이지를 표시하고 있는 경우, URL을 직접 두드리면 정상적으로 표시되지만, nuxt-link로 천이 하거나 브라우저 백으로 이동하면 An error occurred
라는 에러가 나온다.
참고: Chrome 개발자 도구 열 때 오류
결론
nuxt.config.js에서 axios 프록시를 설정합시다.
이유
CORS(원본간 리소스 공유) 때문입니다.
nuxt.config.js에서 axios 프록시를 설정합시다.
이유
CORS(원본간 리소스 공유) 때문입니다.
URL 두드렸을 때 표시되는 경우 API의 경로가 잘못되거나 처리가 이상하지 않습니다.
서버 측과 클라이언트 측, 어느 쪽에서 실행되고 있는지 깨닫는지가 열쇠.
필자는 1시간 이상 고민
비록 같은 서버상에서 움직이고 있어도, 백엔드와 프런트 엔드(Nuxt)가 다른 port로 움직이고 있으면, CORS의 대책이 필요.
대처법
nuxt.config.js ** Nuxt.js modules
*/
modules: [
- "@nuxtjs/axios"
+ "@nuxtjs/axios",
+ "@nuxtjs/proxy"
],
+ axios: {
+ proxy: true
+ },
+ proxy: {
+ '/v1/': {
+ target: "https://example.com:8080/"
+ }
+ },
참고(API 호출):pages/posts/_id.vue<script>
export default {
validate({ params }) {
return /^\d+$/.test(params.id)
},
async asyncData({ $axios, params }) {
const response = await $axios.$get(`/v1/posts/${params.id}`)
return {
post: response.post
}
}
}
</script>
** Nuxt.js modules
*/
modules: [
- "@nuxtjs/axios"
+ "@nuxtjs/axios",
+ "@nuxtjs/proxy"
],
+ axios: {
+ proxy: true
+ },
+ proxy: {
+ '/v1/': {
+ target: "https://example.com:8080/"
+ }
+ },
<script>
export default {
validate({ params }) {
return /^\d+$/.test(params.id)
},
async asyncData({ $axios, params }) {
const response = await $axios.$get(`/v1/posts/${params.id}`)
return {
post: response.post
}
}
}
</script>
@nuxtjs/proxy
는 axios에 세트로 들어 있기 때문에 yarn add가 필요하지 않습니다 Reference
이 문제에 관하여(Nuxt.js에서 URL 직접 두드릴 때 페이지가 표시되지만 nuxt-link 또는 브라우저 백에서 An error occurred가됩니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/rf_p/items/e52a1ea4273247f051ae텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)