Moment: μˆœκ°„μ€ Jest와 ν•¨κ»˜ μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€

에 λ§Œλ“  2019λ…„ 07μ›” 16일  Β·  9μ½”λ©˜νŠΈ  Β·  좜처: moment/moment

버그 μ„€λͺ…
개발 μ„€μ • import moment from 'moment' 둜 κ°€μ Έ 였면 μˆœκ°„μ΄ 효과적으둜 μž‘λ™ν•˜κ³  μ›ν•˜λŠ” λͺ¨λ“  μž‘μ—…μ„ μˆ˜ν–‰ ν•  수 μžˆμŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ moment ()λ₯Ό ν˜ΈμΆœν•˜λŠ” μ½”λ“œμ—μ„œ μ‹€ν–‰λ˜λŠ” jest ν…ŒμŠ€νŠΈλ₯Ό μ‹€ν–‰ν•  λ•Œ λ‹€μŒ 였λ₯˜κ°€ λ°œμƒν•©λ‹ˆλ‹€.
"TypeError : moment_1.defaultλŠ” ν•¨μˆ˜κ°€ μ•„λ‹™λ‹ˆλ‹€."
μ΄μƒν•˜κ²Œλ„ import * as moment from 'moment' λ°©μ‹μœΌλ‘œ κ°€μ Έ 였면 ν…ŒμŠ€νŠΈμ—μ„œλŠ” κΈ°λŠ₯이 ν—ˆμš©λ˜μ§€λ§Œ ν”„λ‘œλ•μ…˜μ—μ„œλŠ” ν—ˆμš©λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λ‚˜λŠ” jest의 문제λ₯Ό λͺ¨λ‘ μ‚΄νŽ΄ λ³΄μ•˜κ³  이것은보고 된 λ¬Έμ œμ΄μ§€λ§Œ Jest νŒ€μ€ λ¬Έμ œκ°€ μˆœκ°„μ˜ 편이라고 ν™•μ‹ ν•©λ‹ˆλ‹€.

μž¬μƒμ‚°ν•˜λ €λ©΄
λ™μž‘μ„ μž¬ν˜„ν•˜λŠ” 단계 :

  1. moment ()λ₯Ό ν˜ΈμΆœν•˜λŠ” λ°˜μ‘ μ•±μ—μ„œ κ°„λ‹¨ν•œ ν•¨μˆ˜λ₯Ό λ§Œλ“­λ‹ˆλ‹€.
  2. 이 경둜λ₯Ό νš‘λ‹¨ν•˜λŠ” 농담 ν…ŒμŠ€νŠΈλ₯Ό μΆ”κ°€ν•˜μ‹­μ‹œμ˜€.
  3. ν…ŒμŠ€νŠΈλ₯Ό μ‹€ν–‰ν•˜μ‹­μ‹œμ˜€.
  4. 였λ₯˜ μ°Έμ‘°

μ˜ˆμƒλ˜λŠ” 행동
λͺ¨λ©˜νŠΈλŠ” ν…ŒμŠ€νŠΈμ™€ ν”„λ‘œλ•μ…˜μ—μ„œ 같은 λ°©μ‹μœΌλ‘œ 호좜 ν•  수 μžˆμ–΄μ•Όν•©λ‹ˆλ‹€.

λ°μŠ€ν¬νƒ‘ (λ‹€μŒ 정보λ₯Ό μž‘μ„±ν•˜μ‹­μ‹œμ˜€) :

  • 운영체제 : macOS Mojave
  • ν…ŒμŠ€νŠΈ : Jest -v 24.8.0

μˆœκ°„ 별 ν™˜κ²½
μˆœκ°„ -v 2.24.0

  • μ‚¬μš©μ€‘μΈ 기타 라이브러리 : TypeScript

ν™˜κ²½μ—μ„œ λ‹€μŒ μ½”λ“œλ₯Ό μ‹€ν–‰ν•˜κ³  좜λ ₯을 ν¬ν•¨ν•˜μ‹­μ‹œμ˜€.
λͺ¨λ©˜νŠΈλ₯Ό κ°€μ Έμ˜¬ λ•Œ μ½˜μ†” 좜λ ₯이 개발이 μ˜ˆμƒν•˜λŠ” λ°©μ‹μœΌλ‘œ 즉 'λͺ¨λ©˜νŠΈ'μ—μ„œ λͺ¨λ©˜νŠΈλ₯Ό κ°€μ Έμ˜΅λ‹ˆλ‹€.

console.log src/resources/timestamping.tsx:4
      Tue Jul 16 2019 10:58:16 GMT-0400 (Eastern Daylight Time)
    console.log src/resources/timestamping.tsx:5
      7/16/2019, 10:58:16 AM
    console.log src/resources/timestamping.tsx:6
      240
TypeError: Cannot read property 'version' of undefined.

λͺ¨λ©˜νŠΈλ₯Ό κ°€μ Έμ˜¬ λ•Œ μ½˜μ†” 좜λ ₯은 ν…ŒμŠ€νŠΈμ—μ„œ μž‘λ™ν•˜λŠ” λ°©μ‹μž…λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ import * as moment from 'moment'

console.log src/resources/timestamping.tsx:4
      Tue Jul 16 2019 11:02:46 GMT-0400 (Eastern Daylight Time)
    console.log src/resources/timestamping.tsx:5
      7/16/2019, 11:02:46 AM
    console.log src/resources/timestamping.tsx:6
      240
    console.log src/resources/timestamping.tsx:8
      2.24.0
Documentation Help Wanted

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

const moment = require("moment").default || require("moment") λŠ” μ œκ°€ 생각해 λ‚Έ κ²ƒμ΄μ§€λ§Œ moment λ₯Ό ν•¨μˆ˜λ‘œ μ‚¬μš©ν•  수만 μžˆμŠ΅λ‹ˆλ‹€.
// νŽΈμ§‘ν•˜λ‹€

import * as mom from "moment";
const moment = require("moment").default || require("moment");

각도 / 농담 문제λ₯Ό μˆ˜μ •ν•©λ‹ˆλ‹€. ν•˜μ§€λ§Œ μ—¬μ „νžˆ ν•΄ν‚Ήμž…λ‹ˆλ‹€.

λͺ¨λ“  9 λŒ“κΈ€

const moment = require("moment").default || require("moment") λŠ” μ œκ°€ 생각해 λ‚Έ κ²ƒμ΄μ§€λ§Œ moment λ₯Ό ν•¨μˆ˜λ‘œ μ‚¬μš©ν•  수만 μžˆμŠ΅λ‹ˆλ‹€.
// νŽΈμ§‘ν•˜λ‹€

import * as mom from "moment";
const moment = require("moment").default || require("moment");

각도 / 농담 문제λ₯Ό μˆ˜μ •ν•©λ‹ˆλ‹€. ν•˜μ§€λ§Œ μ—¬μ „νžˆ ν•΄ν‚Ήμž…λ‹ˆλ‹€.

흠. ν•˜μ§€λ§Œ μ—¬μ „νžˆ ν•΄ν‚Ήμž…λ‹ˆλ‹€.

도와 μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€.

Moment.js μΈ‘μ—μ„œ ν•  μˆ˜μžˆλŠ” 일이 μžˆμŠ΅λ‹ˆκΉŒ?

typescript 및 jest μž‘μ—…μ— ts-jest λ₯Ό) μ‚¬μš©ν•  λ•Œμ΄ λ¬Έμ œμ— μ§λ©΄ν–ˆμŠ΅λ‹ˆλ‹€. λŒ€μ‹  jest와 ν•¨κ»˜ 타이프 슀크립트 지원을 μœ„ν•΄ babel을 μ‚¬μš©ν•˜κ²Œλ˜μ—ˆκ³  더 이상 μ§λ©΄ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. μ•„λ§ˆλ„ ts-jest λΌμ΄λΈŒλŸ¬λ¦¬κ°€ λ‚΄λΆ€μ μœΌλ‘œ λ­”κ°€λ₯Όν•˜κ³ μžˆμ„ 수 μžˆμŠ΅λ‹ˆλ‹€.

더 λ§Žμ€ 검색 ν›„ μ—¬κΈ°μ—μ„œ 해결책을 μ°Ύμ•˜μŠ΅λ‹ˆλ‹€.
https://github.com/aurelia/skeleton-navigation/issues/606#issuecomment -397051406

tsconfig.json의 compilerOptions μ•„λž˜μ—μ„œ "esModuleInterop": true λ₯Ό μ „λ‹¬ν•΄μ•Όν•©λ‹ˆλ‹€.

@DhrubajitPC 당신이 해결책을
λ¬Έμ„œμ— μΆ”κ°€ ν•  수 μžˆμŠ΅λ‹ˆκΉŒ?
https://momentjs.com/docs/#/use -it / typescript /

λ¬Όλ‘ μž…λ‹ˆλ‹€ ... μ‹œκ°„μ„μ£Όμ„Έμš” :)

음 ... 이미 FAQ의 일뢀인 것 κ°™μŠ΅λ‹ˆλ‹€
https://github.com/moment/moment/blob/develop/FAQ.md

esModuleInterop을 true둜 μ„€μ •ν–ˆμ„ λ•Œλ§Œμ΄ 였λ₯˜κ°€ λ°œμƒν•˜λŠ” 것 κ°™μŠ΅λ‹ˆλ‹€.
@KonradLinkowski- 해킹이 λ„μ›€μ΄λ˜μ—ˆμŠ΅λ‹ˆλ‹€ :)

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰