react-native 0.59.10μ μ¬μ©νκ³ momentJSμ λν λ‘μΌμΌμ μ€μ ν λ λ¦΄λ¦¬μ€ λΉλμ λν΄μλ§ λ§€μ° μμΈν μΆ©λμ΄ λ°μνμ΅λλ€. λλ²κ±°κ° μ°κ²°λ μνμμλ μ΄ μΆ©λμ μ¬νν μ μμμ΅λλ€. μ΄ μΆ©λμ iOSμ Android λͺ¨λμμ λ°μνμ΅λλ€. λͺ¨λ μκ° μ¬μ©μ λννλ try-catch λ¬Έμ μΆ©λμ ν¬μ°©νμ§ λͺ»νμ΅λλ€!
μ¬ννκΈ° μν΄
["fr-CA", "en-US", "fr", "en"]
moment.locale(localeCandidate)
νΈμΆνμμλ λΆκ΅¬νκ³ μ ν리μΌμ΄μ
μ μ¬μ ν ββμ΄ λΌμΈμμ μΆ©λν©λλ€βμ΄κ²μ μΆμ μ μΆ©λμ΄μμ§λ§ λ¦΄λ¦¬μ€ λΉλμλ§ ν΄λΉλ©λλ€!! μ΄λ‘ μΈν΄ μ μ©ν μ€λ₯ λ©μμ§/λ‘κΉ μ μΆμΆνλ κ²μ΄ λ§€μ° κΉλ€λ‘μμ‘μ΅λλ€.
Bugsnag ν΅ν© λ° μμ€ν μ½μ λ‘κΉ μ ν΅ν΄ λ€μ μ€λ₯ λ©μμ§λ₯Ό νμΈνμ΅λλ€.
Exception in HostFunction: Error loading module0from RAM Bundle: unspecified iostream_category error
Exception in HostFunction: Module not found: 0
Requiring unknown module "./locale/en-us".
보μμ§λ§ μ΄μνκ²λ μ΄ μ€λ₯λ μ μμ μ²λ¦¬λμ§ μμμ΅λλ€. react-native/bugsnag λ¬Έμ μΌ μ μμ΅λλ€.ν΄κ²° λ°©λ²: μ΄ λ μ€μ μ£Όμ μ²λ¦¬νλ©΄ μΆ©λμ΄ μ€μ§λ©λλ€!
μμλλ νλ
require()
λ₯Ό μ¬μ©νλ κ²½μ° λ°μ λ€μ΄ν°λΈ λ¬Έμ μΌ μ μμ)μ€λ§νΈν°(λ€μ μ 보λ₯Ό μμ±ν΄ μ£ΌμΈμ):
μκ°λ³ νκ²½
νκ²½μμ λ€μ μ½λλ₯Ό μ€ννκ³ μΆλ ₯μ ν¬ν¨νμμμ€.
console.log([
new Date().toString(),
new Date().toLocaleString(),
new Date().getTimezoneOffset(),
navigator && navigator.userAgent, // react-native might not have a navigator
moment.version,
]);
μ°μΆ:
[
"Wed Oct 09 2019 18:52:16 GMT-0700 (PDT)",
"09/10/2019 Γ 18:52:16", // This particular device is configured as fr-FR
420,
null,
"2.24.0"
]
μΆκ° 컨ν μ€νΈ
μ°Έμ‘°λ λΌμΈμ λ°νμμ λͺ¨λμ μꡬνλ €κ³ "μλμΌλ‘" μλνμ§λ§, λ‘λ© λ‘μΌμΌ λ¬Έμ λ JSPMκ³Ό κ°μ ν¨ν€μ§ κ΄λ¦¬μλ₯Ό μ¬μ©νλ κ²½μ° import "moment/locale/fr
λ‘μΌμΌμ λ‘λν μ μμμ λνλ
λλ€. νμΌμ κ°μ ΈμμΌ νλ€λ κ²μ "μκΈ°" μν΄ react-native ν¨ν€μ§ κ΄λ¦¬μκ° νμνκΈ° λλ¬Έμ Packagerκ° λ²λ€λ‘ ν¬ν¨λμ΄μΌ νλ λͺ¨λ νμΌμ "λ³Ό" μ μλλ‘ ν΄λΉ μ€νμΌμ κ°μ Έμ€κΈ°λ₯Ό μλνμ΅λλ€.
κΆκ·Ήμ μΌλ‘ μμ λΌμΈμ λ€μκ³Ό κ°μμ΅λλ€.
import moment from "moment";
import "moment/min/locales"; // Import all moment-locales -- it's just 400kb
import "moment-timezone";
require()
μ μ νν ꡬνμ μμ
μ€μΈ λ°νμμ μν΄ μ£Όμ
λλ©° μ΄λ νμ€ν λλ²κ·Έ λ° λ¦΄λ¦¬μ€ λΉλ κ°μ ν¬κ² λ€λ₯΄κ² λμνλ κ²μ
λλ€.
react-nativeμλ all-in-one-file, all-in-separate-files λ° RAM Bundlesλ₯Ό ν¬ν¨νμ¬ λ¦΄λ¦¬μ€ λͺ¨λ JavaScript λ²λ€λ§μ μ¬λ¬ λ€λ₯Έ νΉμ§λ μμ΅λλ€. μ΄λ€ κ°κ°μ λν require μλ λ°©μμ λ³κ²½ν©λλ€. λλ²κ·Έ require()
λ λ‘컬 http μλ²μμ μ€νλλ Metro Bundlerμ μ°κ²°ν©λλ€. μ΄κ²μ μλ§λ webpack/jspm/κΈ°ν λλ²κ·Έ μλ²μ λ§€μ° μ μ¬ν κ²μ
λλ€. μ΄κ²μ΄ μλ§λ μ¨λ¦¬μ΄μ±μ΄ ν΄λΉ νκ²½μμ λ¬Έμ λ₯Ό μΌμΌν€μ§ μλ μ΄μ μΌ κ²μ
λλ€.
A. aliasedRequire
μμ νλ κ²μ΄ λ μ΄μ μμ
λ°©μμ΄ μλ κ²½μ° + μ΄μ λν μ€μΉ μ§μΉ¨μ μ‘°μ νμκ² μ΅λκΉ?
B. react-native λ λΈλΌμ°μ κ°μ§( navigator
λ react-nativeμμλ μ¬μ©ν μ μμ§λ§ μ¬κΈ°μλ λ€λ₯Έ κΈ°μ μ΄ μμ΅λλ€.), μ°λ¦¬κ° μ²ν μν©μ λ°λΌ λ€λ₯΄κ² μλν©λκΉ? μλ₯Ό λ€μ΄ react-native && DEVμ΄λ©΄ λ‘μΌμΌμ΄ μ΄λ‘ μ μΌλ‘ μ§μλμ§λ§ μμ§ required
κ° μλ κ²½μ° console.errorλ₯Ό μΈμν©λλ€(+ μ
λ°μ΄νΈ λ¬Έμ).
C. aliasedRequire
λ₯Ό ν΄λΉ ν¨μμ λ‘컬 λ³μμμ "μΈλ―Έ κΈλ‘λ²"λ‘ μ΄λν©λλ€. moment.aliasedRequire
, κ·Έλ° μμΌλ‘ μ°λ¦¬λ no-op/do-nothing ν¨μλ₯Ό μ£Όμ
νμ¬ aliasedRequire
κ° react-nativeκ° λ μ΄μ μΆ©λμ μΌμΌν¬ μ μλλ‘ ν μ μμ΅λλ€.
μ μ§ κ΄λ¦¬μκ° λ΄κ° ꡬννκΈ°λ₯Ό μνλ μ΅μ μ μλ €μ€ μ μκ³ Proposals B/Cμ κ²½μ° μλ½νλ €λ μ νν ꡬνμ κ°μ νλ λ° λμμ΄ λλ€λ©΄ μ΄λ¬ν μ΅μ μ ꡬννκ² λμ΄ κΈ°μ©λλ€!
@marwahaha -- Momentμ νλ‘μΈμ€κ° 무μμΈμ§ νμ€νμ§ μμ΅λλ€. λ΄ μμ μ μμ λν μκ²¬μ΄ μμΌμλκΉ? κΈ°μ¬μ/μ μ§λ³΄μμκ° λ°μλ€μΌ μ μλ κ²½λ‘μ λν μ‘°μΈμ λ°μΌλ©΄ PRμ ꡬννκ² λμ΄ κΈ°μ©λλ€.
κ°μ₯ μ μ©ν λκΈ
μ°Έμ‘°λ λΌμΈμ λ°νμμ λͺ¨λμ μꡬνλ €κ³ "μλμΌλ‘" μλνμ§λ§, λ‘λ© λ‘μΌμΌ λ¬Έμ λ JSPMκ³Ό κ°μ ν¨ν€μ§ κ΄λ¦¬μλ₯Ό μ¬μ©νλ κ²½μ°
import "moment/locale/fr
λ‘μΌμΌμ λ‘λν μ μμμ λνλ λλ€. νμΌμ κ°μ ΈμμΌ νλ€λ κ²μ "μκΈ°" μν΄ react-native ν¨ν€μ§ κ΄λ¦¬μκ° νμνκΈ° λλ¬Έμ Packagerκ° λ²λ€λ‘ ν¬ν¨λμ΄μΌ νλ λͺ¨λ νμΌμ "λ³Ό" μ μλλ‘ ν΄λΉ μ€νμΌμ κ°μ Έμ€κΈ°λ₯Ό μλνμ΅λλ€.κΆκ·Ήμ μΌλ‘ μμ λΌμΈμ λ€μκ³Ό κ°μμ΅λλ€.
require()
μ μ νν ꡬνμ μμ μ€μΈ λ°νμμ μν΄ μ£Όμ λλ©° μ΄λ νμ€ν λλ²κ·Έ λ° λ¦΄λ¦¬μ€ λΉλ κ°μ ν¬κ² λ€λ₯΄κ² λμνλ κ²μ λλ€.react-nativeμλ all-in-one-file, all-in-separate-files λ° RAM Bundlesλ₯Ό ν¬ν¨νμ¬ λ¦΄λ¦¬μ€ λͺ¨λ JavaScript λ²λ€λ§μ μ¬λ¬ λ€λ₯Έ νΉμ§λ μμ΅λλ€. μ΄λ€ κ°κ°μ λν require μλ λ°©μμ λ³κ²½ν©λλ€. λλ²κ·Έ
require()
λ λ‘컬 http μλ²μμ μ€νλλ Metro Bundlerμ μ°κ²°ν©λλ€. μ΄κ²μ μλ§λ webpack/jspm/κΈ°ν λλ²κ·Έ μλ²μ λ§€μ° μ μ¬ν κ²μ λλ€. μ΄κ²μ΄ μλ§λ μ¨λ¦¬μ΄μ±μ΄ ν΄λΉ νκ²½μμ λ¬Έμ λ₯Ό μΌμΌν€μ§ μλ μ΄μ μΌ κ²μ λλ€.