["@babel/plugin-proposal-private-methods", { "loose": true }]
젠킨스 빌드를 돌리는데 빌드가 30분째 돌아가고 있는 것이다.
원래는 5분쯤이면 빌드 완료가 떴기 때문에 무엇이 문제인지 로그를 확인해봤다.
Though the "loose" option was set to "false" in your @babel/preset-env config, it will not be used for @babel/plugin-proposal-private-property-in-object since the "loose" mode option was set to "true" for @babel/plugin-proposal-class-properties.
위와 같은 warning이 console에서 반복되면서 빌드가 계속 진행 중 상태였다.
워닝 내용에도 나와있듯이 바벨 설정에 loose를 true로 설정해주면 된다.
["@babel/plugin-proposal-private-methods", { "loose": true }]
{
...,
"plugins": [
...,
["@babel/plugin-proposal-private-methods", { "loose": true }]
]
}
빌드 문제는 해결된다.
도대체 저 설정이 뭐길래 이런 상황이 벌어지는 건지 babel 공식 문서를 살펴봤다.
https://babeljs.io/docs/en/babel-plugin-proposal-private-methods
Babel · The compiler for next generation JavaScript
The compiler for next generation JavaScript
babeljs.io
loose의 기본값은 false 인 상태인데, true로 설정되었다면 private method가 WeakSet에 할당되는 것이 아니라 자신의 부모에게 직접적으로 할당된다고 나와있다.
WeakSet이 뭔지 몰라서 또 이걸 찾아봤더니
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/WeakSet
WeakSet - JavaScript | MDN
WeakSet 객체는 약하게 유지되는(held, 잡아두는) 객체를 컬렉션에 저장할 수 있습니다.
developer.mozilla.org
객체만 저장할 수 있는 Set이라고 생각하면 될 것 같다.
내가 코드 수정을 하면서 리액트 스토어에
this.orderData.bankAccount && this.orderData.bankAccount.id !== 0
? {
...response.data,
bankAccount: { ...this.orderData.bankAccount },
}
: {
...response.data,
};
이런 코드를 짰었는데 이 부분에서 객체 사용 관련된 부분이 문제가 있었나 보다.
위 코드를
const data = response.data;
if (this.orderData.bankAccount && this.orderData.bankAccount.id !== 0) {
data.bankAccount = { ...this.orderData.bankAccount };
}
this.orderData = data;
이렇게 수정하고 바벨 설정을 추가했더니 해결되었다.
그런데 코드를 아래처럼 수정했을 때도 바벨 에러가 나긴 했었으니까 리팩터링 할 때 더 자세히 찾아보고서 수정해야 할 것 같다.
'React' 카테고리의 다른 글
[React/CSS] 리액트 줄 바꿈: 자바스크립트 줄 바꿈(\n) 안됨 (0) | 2022.11.16 |
---|---|
[NPM] package-lock.json 파일이 깃 레포지토리에 있어야 하는 이유 (0) | 2022.10.14 |
[React] CRA없이 프로젝트 세팅(Babel, Webpack, Polyfill) #2: Webpack과 Polyfill (0) | 2022.04.29 |
[React] CRA없이 프로젝트 세팅(Babel, Webpack, Polyfill) #1: Babel (0) | 2022.04.29 |
[Next.js] 프로젝트 생성 with TypeScript (0) | 2022.04.28 |