Promise rejected SyntaxError Unexpected end of input

2022, Aug 16    
vuejs vue

problem

  • api를 get방식으로 호출해서 데이터를 리턴받아 화면에 표시하는 간단한 작업이다.
  • fetch를 통해서 호출하면 개발자도구로 보면 200인데도, response.ok가 false로 리턴되어있다. (response.ok는 400, 500일 때 false로 됨)
fetch('http://localhost:7070/test', {
        method: 'GET',
        mode: 'no-cors',
        credentials: 'same-origin',
        headers: {
          'Content-Type': 'application/json',
          Accept: "application/json",
          "Access-Control-Allow-Origin": "*",
        }
      }).then((response) => {
            console.log(response.json());
        if (response.ok) {
              return response.json();
            } else {
              if (!response.ok) {
                console.log('status --'+response.status);
              }
            }
          })

try. response를 ok여부와 상관없이 json()

Scheduler.vue?d1c4:53 **Promise {<rejected>: SyntaxError: Unexpected end of input**
    at eval (webpack-internal:///./node_modules/cache-loader/d}[[Prototype]]: Promise[[PromiseState]]: "rejected"[[PromiseResult]]: SyntaxError: Unexpected end of input
    at eval (webpack-internal:///./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader-v16/dist/index.js?!./src/components/survey/Scheduler.vue?vue&type=script&lang=js:31:30)message: "Unexpected end of input"stack: "SyntaxError: Unexpected end of input\n    at eval (webpack-internal:///./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader-v16/dist/index.js?!./src/components/survey/Scheduler.vue?vue&type=script&lang=js:31:30)"[[Prototype]]: Error
Scheduler.vue?d1c4:61 status --0
Scheduler.vue?d1c4:80 SyntaxError: Unexpected end of input (at Scheduler.vue?d1c4:64:1)
    at eval (Scheduler.vue?d1c4:64:1)
Scheduler.vue?d1c4:53 Uncaught (in promise) SyntaxError: Unexpected end of input (at Scheduler.vue?d1c4:53:1)
    at eval (Scheduler.vue?d1c4:53:1)
eval @ Scheduler.vue?d1c4:53

cause

  • 구글링 해보면 원인은 다양한 것 같지만, cors에 대한 처리를 해주면 된다.

resolve

  • 백엔드가 spring boot로 되어있어서 cors에 대한 config bean에 ignore path로 등록해줬다.