모듈 문제
ES 모듈을 사용할 때, __dirname을 사용하면 ReferenceError가 생긴다.
CommonJS에서 사용하던 __dirname 변수가 ES 모듈에서는 없기 때문에 발생하는 에러.
// 대체 코드
const __dirname = path.resolve();
storage API
웹 스토리지를 사용할 때 주의해야 할 점: 오직 문자형(string) 데이터 타입만 지원
해결: JSON 형태로 데이터를 읽고 쓰기
[ 로컬 스토리지에 쓸 데이터를 JSON 형태로 직렬화(serialization) / 읽은 데이터를 JSON 형태로 역직렬화(deserialization) ]
// 값을 가져올 때,
const repoLists = JSON.parse(window.localStorage.getItem("lists")) || []
// 값을 설정할 때,
const _lists = writable(repoLists)
_lists.subscribe($lists => {
window.localStorage.setItem("lists", JSON.stringify($lists))
})
특정 모듈 사용 시 생기는 롤업 번들러 문제
rollup-plugin-node-builtins: Node 내장 API를 사용할 수 있게 해줌. (builtins)
rollup-plugin-node-globals: 일부 Node 모듈이 필요로 하는 전역 API를 사용할 수 있게 해줌. (globals)
rollup-plugin-replace: 번들 파일의 문자를 대체. 문제가 발생하는 코드를 다른 코드로 대체 실행하기 위해 사용한다. (replace)
// resolve(), 위에
replace({
values: {
'crypto.randomBytes': 'require("randombytes")'
}
}),
// commonjs(), 밑에
globals(),
builtins(),
수정 모드