ees*_*ein 32 javascript angularjs momentjs systemjs
我使用JSPM,AngularJS,TypeScript,SystemJS和ES6我的项目运行非常好......除非我尝试使用momentJS.
这是我得到的错误:
TypeError:时刻不是函数
这是代码的一部分:
import * as moment from 'moment';
Run Code Online (Sandbox Code Playgroud)
更多:
var momentInstance = moment(value);
Run Code Online (Sandbox Code Playgroud)
如果我调试它,时刻是一个对象而不是一个函数:
这就是我的moment.js JSPM包的样子:
module.exports = require("npm:moment@2.11.0/moment.js");
Run Code Online (Sandbox Code Playgroud)
我已经阅读了很多,找不到解决这个问题的方法......任何想法?
我读过/试过的一些事情:
如何在TypeScript中使用带有SystemJS的momentjs?
https://github.com/angular-ui/ui-calendar/issues/154
https://github.com/jkuri/ng2-datepicker/issues/5
https://github.com/dbushell/Pikaday/issues/153
谢谢!
Oka*_*Oka 59
只需* as从import语句中删除grouping():
import moment from 'moment';
Run Code Online (Sandbox Code Playgroud)
如果不深入挖掘源代码,它moment通常会导出一个函数,它附加了各种方法和其他属性.
通过使用* as,您可以有效地抓取所有这些属性并将它们附加到新对象,从而破坏原始功能.相反,您只需要export default主导出(在ES6中,module.exportsNode.js中的对象).
或者,你可以做到
import moment, * as moments from 'moment';
Run Code Online (Sandbox Code Playgroud)
获取当前函数as moment,以及调用的对象上的所有其他属性moments.将ES5导出这样的ES5导出转换为ES6样式时,这moment会有点不太明显,因为它会保留相同的属性.