【发布时间】:2016-09-04 14:36:52
【问题描述】:
我没有让 Aurelia (CLI) & TypeScript & MomentJS 一起工作。我见过 Aurelia & Moment 问题的解决方案,但他们不使用 Aurelia CLI。
这是我目前正在做的事情:
使用 Aurelia CLI 的新 Aurelia 项目:
au new
我选择 TypeScript 而不是 Babel。
安装时刻
npm install moment --save
这将安装 Moment 2.4.1。我可以从 node_modules 中找到它(包括 moment.d.ts)。
编辑 aurelia.json
我将“时刻”添加到“依赖项”:
在 app.ts 中使用 Moment
当我现在尝试在 app.ts 中导入 Moment 时,问题就开始了。
import { moment } from 'moment';
这给出错误:“模块“o:/dev/spikes/amoment/node_modules/moment/moment”没有导出成员“moment”
更改大小写可修复此错误:
import { Moment } from 'moment';
但在这一点上,我完全被困住了。当尝试使用时刻(或时刻)时,我总是收到错误“找不到名称‘时刻’。这是当前 app.ts 给出的“找不到名称‘时刻’”-错误:
import { Moment } from 'moment';
export class App {
message = 'Hello World!';
hello() : string {
return moment.format();
}
}
导入似乎是问题所在。任何想法如何解决这个问题?
更新
在将 app.ts 修复为如下所示后,现在可以编译了。但它在运行时给出“TypeError:无法读取未定义的属性'格式'”。
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,自动注入似乎无法正常工作。所以添加了这一点,错误发生了变化:“TypeError: moment.format is not a function”。
import { Moment } from 'moment';
import { autoinject } from "aurelia-framework";
@autoinject
export class App {
message: string;
moment: Moment;
constructor(moment: Moment) {
this.message = moment.format();
}
}
【问题讨论】:
标签: typescript momentjs aurelia