2016-09-04 4 views
3

Aurelia (CLI) & TypeScript & MomentJS가 함께 작동하지 않습니다. Aurelia 솔루션을 보았습니다 & 일시적인 문제가 있지만 Aurelia CLI를 사용하지 않았습니다.Aurelia CLI & TypeScript & MomentJS

는 여기에 내가 지금 뭘하는지입니다 : 아우렐 리아 CLI를 사용하여

새로운 아우렐 리아 프로젝트 :

au new 

내가 대신 바벨의 타이프를 선택합니다.

순간

npm install moment --save 

이 순간 2.4.1을 설치합니다 설치합니다. node_modules에서 찾을 수 있습니다 (moment.d.ts 포함).

는 편집 aurelia.json는

나는 "순간"을 "종속"추가 app.ts에서

Moment aurelia.json

사용 순간을

문제 때 지금 시작 app.ts에서 Moment를 가져 오십시오.

import { moment } from 'moment'; 

이 오류를 범 "모듈"O/디바이스/스파이크/amoment/node_modules/현재/순간 "케이싱 수정이 에러 변경에는 반출 부재 '순간'

없다 :

import { Moment } from 'moment'; 

그러나이 시점에서 나는 완전히 붙어 있습니다. 순간 (또는 순간)을 사용하려고 할 때 나는 항상 "이름을 찾을 수 없습니다 '라는 순간을 얻습니다.

import { Moment } from 'moment'; 

export class App { 
    message = 'Hello World!'; 

    hello() : string { 
    return moment.format(); 
    } 
} 

가져 오기 문제가 될 것으로 보인다 : 여기에 "이름을 찾을 수 없습니다 '순간'"-error을주고있다 현재 app.ts입니다. 어떤 아이디어가이 문제를 어떻게 해결할 수 있습니까? 다음과 같이 할 수 app.ts 고정 후

업데이트

는 것은 이제 컴파일합니다. 그러나 "TypeError : 실행할 때 undefined"속성 '형식'을 읽을 수 없습니다.

import { Moment } from 'moment'; 
import { autoinject } from "aurelia-framework"; 

export class App { 
    message: string; 
    moment: Moment; 

    constructor(moment: Moment) { 
    this.moment = moment; 
    this.message = this.moment.format('MMMM Do YYYY, h:mm:ss a') 
    } 
} 

마지막 오류를 바탕으로 업데이트

, 그 autoinject이 @autoinject없이 작동하지 않는 것 같다. 추가 된 및 오류 변경 : "TypeError : moment.format 함수가 아닙니다".

import { Moment } from 'moment'; 
import { autoinject } from "aurelia-framework"; 

@autoinject 
export class App { 
    message: string; 
    moment: Moment; 

    constructor(moment: Moment) { 
    this.message = moment.format(); 
    } 
} 

답변

8

MomentJS 만 moment 변수를 수출하는 글로벌 모듈입니다. d.ts 파일의 다른 인터페이스 정의입니다 (예 : interface Moment은 실제 데이터로 내보낼 수 없습니다. 그것들은 TypeScript 컴파일러와 인텔리 센스를 위해 존재합니다.

위의 TS 컴파일러 및 TypeError 문제가 발생했습니다. 당신은 자동 삽입기로 컴파일러를 속일 수 있지만 브라우저는 속여서는 안됩니다.

순간의는 definition file : 위해

declare module 'moment' { 
    var moment: moment.MomentStatic; 
    export = moment; 
} 

가 작동하려면

는이 같은 import 문 사용 : 그 후 [moment docs]

import * as moment from 'moment';

을의 moment 변수를 사용할 수있게하고 평상시와 같이 사용할 수 있습니다. 클래스에서

사용법 :

import * as moment from 'moment'; 

export class App { 
    message = 'Hello World!'; 

    constructor(){ 
    } 

    hello() : string { 
     return moment().format(); 
    } 
} 
+0

가 더 많은 이유를'수입에 정교한 * '순간'에서 순간으로,'에서'수입 모멘트를 사용 아우렐 리아 워드 프로세서에 비해 요구되는 순간 ';'http://aurelia.io/hub.html#/doc/article/aurelia/binding/latest/binding-value-converters/3 – wal

0

업데이트

이 실제로 작동하지 않습니다. 상황이 컴파일되지 않지만 "TypeError : 응용 프로그램을 실행할 때 정의되지 않은 속성 '형식을 읽을 수 없습니다.

원래

아, 저 바보. 나는 순간을 순간에 주입해야했다. 명백하게.

그래서 여기에 작업 버전입니다 :

import { Moment } from 'moment'; 
import { autoinject } from "aurelia-framework"; 

export class App { 
    message = 'Hello World!'; 
    moment: Moment; 

    constructor(moment : Moment){ 
    this.moment = moment; 
    } 

    hello() : string { 
    return this.moment.format(); 
    } 
}