Webpack& TypeScript - 包含Moment.js插件

时间:2017-09-07 07:48:25

标签: angular typescript webpack momentjs

我想在我的Angular 4应用程序中使用JDateFormatParserMoment.js

我设法成功安装并使用Moment.js使用:
npm install moment --save

使用以下内容将其添加到我的.ts

import * as moment from 'moment';

我可以使用并执行它。

之后我使用以下方法安装了插件:
npm install moment-jdateformatparser --save

当我想在我的代码中使用它时:

moment().toJDFString(moment.localeData().longDateFormat('L'))

我的IDE已经抱怨了:

  

TS2339:属性' toJDFString'类型'时刻'上不存在。

看一下this answer我尝试使用强制转换:

(<any>moment()).toJDFString(moment.localeData().longDateFormat('L'))

这解决了IDE中的错误,但在执行期间,控制台告诉我:

  

TypeError: WEBPACK_IMPORTED_MODULE_6_moment (...)。toJDFString is   不是一个功能

有没有人提示如何使用它?

1 个答案:

答案 0 :(得分:1)

您必须导入moment-jdateformatparser,因为它只是将其功能添加到时刻并导出moment

import * as moment from "moment-jdateformatparser";

至于使用多个插件,似乎到目前为止还没有一个好的解决方案,或者至少我还没有找到干净的方式。

一种选择是分别导入两个插件,并将它们命名为不同:

import * as momentJdate from "moment-jdateformatparser";
import * as momentTimezone from "moment-timezone";

如果你想这样,你可以在以后合并它们(使用deepExtend):

let moment = {};
deepExtend(moment, momentJdate, momentTimezone);

//here you should be able to use moment().toJDFString() and moment.tz.names()

在我看来,这些选项都不是 clean ,但它们都应该有效。我也从未在一个文件中使用过多个时刻的插件,因此这样的解决方法可能没问题。