본문 바로가기

errorLog

[js] Failed to construct 'URL'

let previousUrl = '/test.do?name=kim';
new URL(location.host+previousUrl).searchParams;

 

이전 페이지의 url에서 파라미터를 가져오기 위해 작성한 코드이다.

URL 객체를 생성하기 위해 location.host 를 사용한 것인데 에러가 발생했다.

Failed to construct 'URL': Invalid URL TypeError: Failed to construct 'URL': Invalid URL

 

로컬에서는 문제가 없었는데 서버에 올리니 type error가 난다.

확인 결과 URL 생성자의 매개변수로 들어가는 url에 http:// 즉, 프로토콜이 포함되어 있지 않아서 발생한 에러였다.

localhost는 왜 주소에 프로토콜이 없어도 괜찮은거지?

 

일단 location 객체에 대해 정리를 하고 넘어가야겠다.

location 객체는 전역 객체이면서 window 객체의 프로퍼티이므로 window.location 혹은 location 으로 호출하여 사용할 수 있다.

location.href 전체 url
ex) https://www.naver.com/
location.protocol url의 프로토콜
ex) https:
location.host port를 포함한 host
ex) localhost:8080
location.hostname port를 제외한 host
ex) localhost
location.port port 번호
ex) 8080
location.search url의 queryString 즉, 물음표 뒤에 오는 문자열
ex) ?name=kim
location.origin url의 protocol, host, port
ex) http://localhost:8080