Aurelia CLI & TypeScript & MomentJS
Não estou conseguindo que Aurelia (CLI), TypeScript & MomentJS funcionem juntos. Vi soluções para os problemas do Aurelia & Moment, mas eles não usam o Aurelia CLI.
Aqui está o que estou fazendo no momento:
Novo projeto Aurelia usando o Aurelia CLI:
au new
Eu seleciono TypeScript em vez de Babel.
Instale o momento
npm install moment --save
Isso instala o Moment 2.4.1. Eu posso encontrá-lo (incluindo o moment.d.ts) em node_modules.
Editar aurelia.json
Acrescento "momento" a "dependências":
Use Moment em app.ts
Os problemas começam quando agora tento importar o Moment no app.ts.
import { moment } from 'moment';
Isso gera erro: "Módulo" o: / dev / spikes / amoment / node_modules / moment / moment "não possui nenhum membro exportado 'moment'
Alterar a caixa corrige este erro:
import { Moment } from 'moment';
Mas neste momento estou totalmente preso. Ao tentar usar o momento (ou momento), sempre recebo o erro "Não é possível encontrar o nome 'momento'. Aqui está o app.ts atual que está fornecendo o erro" Não é possível encontrar o nome 'momento' ":
import { Moment } from 'moment';
export class App {
message = 'Hello World!';
hello() : string {
return moment.format();
}
}
A importação parece ser o problema. Alguma ideia de como contornar isso?
Atualizar
Depois de corrigir o app.ts para ter a seguinte aparência, a coisa agora é compilada. Mas ele fornece "TypeError: Não é possível ler a propriedade 'formato' de indefinido" quando executado.
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')
}
}
Atualizar
Com base no último erro, parece que o autoinject não estava funcionando sem o @autoinject. Adicionamos isso e o erro muda: "TypeError: moment.format não é uma função".
import { Moment } from 'moment';
import { autoinject } from "aurelia-framework";
@autoinject
export class App {
message: string;
moment: Moment;
constructor(moment: Moment) {
this.message = moment.format();
}
}