2016-10-07 2 views
0

TypeScript를 사용하여 ReactNative 구성 요소에 MomentJS을 사용하고 싶습니다. 내 프로젝트는 노드 모듈 디렉토리에서 library's d.ts file을 가져 오도록 구성되었습니다.TypeScript React 네이티브 프로젝트에서 왜 moment를 임포트로 사용할 수 없습니까?

import * as moment from "moment"; 
const time = moment(); 

내 타이프 라이터 컴파일하지만 난 그렇게으로 응용 프로그램 ReactNative 오류를 실행할 때 :

ReactNative error

이 내 입니다

이 내가 라이브러리를 가져오고 그것을 사용하고 어떻게 tsconfig.json 파일 :

{ 
    "compilerOptions": { 
    "target": "es6", 
    "moduleResolution": "node", 
    "jsx": "react", 
    "outDir": "build/", 
    "sourceMap": true, 
    "noImplicitAny": true, 
    "suppressImplicitAnyIndexErrors": true 
    } 
} 

tsconfig 'target'을 es5로 변경하면 다른 많은 모듈에 문제가 있습니다.

나는 this question과 관련이 있다고 생각하지만 그 질문의 답에 제안대로하고 있습니다.

+0

가져온 항목 호출에 대한 의견은 http://stackoverflow.com/questions/39415661/why-cant-i-import-a-class-or-function-with-import-as-x-from-y를 참조하십시오. '*'를 사용하여 –

답변

1

@DavidD's comment in the linked answer에서 인용 : 그것 때문에 스펙과 연관 방법으로, 예상대로 위의 구문 위에 바벨을 사용하는 경우

조심, 바벨은 직장에서 기능 moment()을 방지 할 수 있습니다. "allowSyntheticDefaultImports": true을 tsconfig.json에 추가하여 import moment from "moment";이 더 이상 오류를 발생시키지 않도록 할 수 있습니다.

근본적인 문제는 moment 기본값으로 함수를 수출한다는 것입니다,하지만 (당신이있는 기본 반작용으로) 바벨을 사용하는 경우 이것은 바벨에 의해 객체에 싸여 얻을 것이다.

TypeScript가이 줄 바꿈을 알고 있는지 또는 momentjs에 대한 정의가 업데이트가 필요한지 확실하지 않습니다.

관련 문제