Problem
Google Analytics를 보는데, 어느 순간 부터 인터넷 익스플로러의 활성사용자수가 0임을 확인하였다. (망할 IE...) 알고보니 우리가 Vue에서 Google Tag Manager를 사용하기 위해 vue-gtm
이라는 라이브러리를 쓰고 있는데 해당 라이브러리의 익스플로러 지원이 안됐던 것이다. vue-cli
에서 기본 적으로 babel을 활용하여 코드를 IE에서도 사용할 수 있게 트랜스파일 해주지만, node_modules
에 속해 있던 라이브러리는 해주지 않아 생기는 문제이다. (안해주는게 효율면에서 낫기도 하다.)
How I Solved
transpileDependencies
옵션을 활용해node_modules
에 속해있는 라이브러리도 babel을 적용할 수 있다는 것을 알게 되었다. (참고)vue.config.js
에 transpileDependencies: ["vue-gtm"] 추가
module.exports = {
... (생략)
transpileDependencies: ["vue-gtm"]
};
- 잘 되는듯 했으나, 다음과 같은 에러 발생
# 빌드될때...
export 'default' (imported as '__vue_script__') was not found...
# 브라우저에서
Uncaught TypeError: Cannot assign to read only property 'exports' of object '#<Object>
이 답변이 많은 도움이 되었다. babel이 js코드를 트랜스파일할 때,
commonjs
를 사용할 수도 있고ES
를 사용할 수도 있는데vue-cli
의 기본 디폴트는 ES. 하지만,vue-gtm
은 commonjs를 사용하여 트랜스파일 되어있었다.commonjs
로 트랜스파일 되어 있는 코드를ES
로 트랜스파일할 때 문제가 발생하는 듯하다.babel.config.js
를 다음과 같이 설정하여 해결하였다. vue-cli에서commonjs
를 사용하여 트랜스파일하도록 설정하였다.
// babel.config.js
module.exports = {
presets: [
["@vue/app", {
modules: "commonjs"
}]
]
};
What I Learned
- 새로운 라이브러리를 사용할 때 꼭 익스플로러 환경을 체크해봐야한다는 교훈을 얻었다.
도움이 되셨다면 1초만 시간을 내셔서 하단의 '광고 클릭' 해주시면 감사하겠습니다. 블로그 운영에 큰 힘이됩니다.
'개발 > 프론트엔드' 카테고리의 다른 글
쉽고 빠른 썸네일 만들기, 퀵썸네일 (Quick Thumbnails) 소개 | 사이드 프로젝트 (36) | 2024.05.12 |
---|---|
React Three fiber(R3F)로 배우는 인터렉티브 3D 웹 개발 | 유데미 수강후기 (1) | 2024.04.28 |
웹 컴포넌트 Svelte로 만들고 배포까지 (feat. 사이드 프로젝트) (10) | 2023.12.24 |
Vue3로 프로젝트를 진행하면서 알게 된 것들 (4) | 2021.10.05 |
Vue 스타일가이드 정도는 읽어봐야겠죠? (0) | 2020.02.29 |