You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Emit additional JavaScript to ease support for importing CommonJS modules. This enables allowSyntheticDefaultImports for type compatibility.
사실 해당 부분의 설명이 조금 명확하지 않은 것 같아서 더 구글링 해보니, TypeScript import 가 javascript 의 import 와 다르게 작동하는 것을 알게 되었습니다.
기본적인 tsc, TypeScript 에서의 import 에 대한 원리 ("esModuleInterop": false) 는 다음과 같습니다.
JavaScript CommonJS
TypeScript ES Module
const moment = require("moment")
import * as momment as "momment"
const moment = require("moment").default
import moment from "moment"
이러한 import 에 대한 구동 원리가 esbuild-jest 와 tsc 가 다르기 때문에 commonjs 와 동일하게 변경해야 합니다.
따라서, "esModuleInterop": true 로 설정하는 구문을 tsconfig.build.json 과 tsconfig.json 에 포함시키면 됩니다.
unchaptered
changed the title
Bug : dayjs is not function, tsc. jest, esbuild-jest
Bug : esModuleInterop: false -> true, dayjs is not function
Sep 29, 2022
unchaptered
changed the title
Bug : esModuleInterop: false -> true, dayjs is not function
Bug : esModuleInterop: false -> true, dayjs is not function
Sep 29, 2022
한 일
현재
test/unit/modules/provider
브런치에서 DayjsProvider 를 테스트하고자 합니다.에러 내용
DayjsProvider.prototype.getDayjsInstance() 에 대한 호출 테스트 실행 시 다음과 같은 에러가 발생합니다.
dayjs is not function
~/src/modules/providers/dajys.provider.ts 파일의 위 2 줄이 jest, esbuild-jest 와 충돌이 나고 있습니다.
아마도, tsc tsconfig.json 과 esbuild-jest 이 컴파일 단계에서 다르게 작동하는 것 같습니다.
조치 사항
위 이슈에서
"esModuleInterop": true
를 사용하면 다음과 같이 변경시킬 수 있음을 알게 되었습니다.TypeScript Compiler Configuration Options - esModuleInterop 에 따르면, 해당 옵션은 기본적으로
false
입니다.또한 다음과 같이 설명 되어 있습니다.
사실 해당 부분의 설명이 조금 명확하지 않은 것 같아서 더 구글링 해보니, TypeScript import 가 javascript 의 import 와 다르게 작동하는 것을 알게 되었습니다.
기본적인 tsc, TypeScript 에서의 import 에 대한 원리 (
"esModuleInterop": false
) 는 다음과 같습니다.이러한 import 에 대한 구동 원리가 esbuild-jest 와 tsc 가 다르기 때문에 commonjs 와 동일하게 변경해야 합니다.
따라서,
"esModuleInterop": true
로 설정하는 구문을 tsconfig.build.json 과 tsconfig.json 에 포함시키면 됩니다.그리고
src/**.ts
파일에 포함되어 있는 namespace import 구문을 전부 일반 import 구문으로 변경하는 것으로 문제가 해결되었습니다.환경 설정
The text was updated successfully, but these errors were encountered: