SystemJS - 时刻不是函数
SystemJS - moment is not a function
我正在使用 JSPM
、AngularJS
、TypeScript
、SystemJS
和 ES6
,我的项目 运行 非常好。 .. 除非我尝试使用 momentJS。
这是我得到的错误:
TypeError: moment is not a function
这是部分代码:
import * as moment from 'moment';
更多:
var momentInstance = moment(value);
如果我调试它,moment 是一个对象而不是一个函数:
这是我的 moment.js JSPM 包的样子:
module.exports = require("npm:moment@2.11.0/moment.js");
我读了很多书,但找不到解决这个问题的方法...有什么想法吗?
我有一些东西 read/tried:
https://github.com/angular-ui/ui-calendar/issues/154
https://github.com/jkuri/ng2-datepicker/issues/5
https://github.com/dbushell/Pikaday/issues/153
谢谢!
只需从导入语句中删除分组 (* as
):
import moment from 'moment';
无需深入研究 source code,看起来 moment
通常会导出一个函数,该函数具有各种方法和附加的其他属性。
通过使用 * as
,您可以有效地获取所有这些属性并将它们附加到 new 对象,从而破坏原始函数。相反,您只需要主要导出(ES6 中的 export default
,Node.js 中的 module.exports
对象)。
或者,您可以这样做
import moment, * as moments from 'moment';
获取矩函数 as moment
,以及对象 moments
的所有其他属性。当将这样的 ES5 导出转换为 ES6 样式时,这没有多大意义,因为 moment
将保留相同的属性。
这对我有用:
import moment from 'moment/src/moment'
一个初学者 JS 错误给我同样的错误:
foobar(moment) {
console.log(moment().whatever());
}
命名参数 moment
会中断对 moment()
函数的访问。
官方文档中的AS图momentJs我的问题通过nodeJS方法解决了:
var moment = require('moment');
moment(); //this does not emit the errors
如果你正在使用 ES6 和 babel,要将 moment work 作为一个函数,你必须以这种方式导入它:
import moment from 'moment'
而不是,如文档中所写
import * as moment from 'moment'
我正在使用 JSPM
、AngularJS
、TypeScript
、SystemJS
和 ES6
,我的项目 运行 非常好。 .. 除非我尝试使用 momentJS。
这是我得到的错误:
TypeError: moment is not a function
这是部分代码:
import * as moment from 'moment';
更多:
var momentInstance = moment(value);
如果我调试它,moment 是一个对象而不是一个函数:
这是我的 moment.js JSPM 包的样子:
module.exports = require("npm:moment@2.11.0/moment.js");
我读了很多书,但找不到解决这个问题的方法...有什么想法吗?
我有一些东西 read/tried:
https://github.com/angular-ui/ui-calendar/issues/154
https://github.com/jkuri/ng2-datepicker/issues/5
https://github.com/dbushell/Pikaday/issues/153
谢谢!
只需从导入语句中删除分组 (* as
):
import moment from 'moment';
无需深入研究 source code,看起来 moment
通常会导出一个函数,该函数具有各种方法和附加的其他属性。
通过使用 * as
,您可以有效地获取所有这些属性并将它们附加到 new 对象,从而破坏原始函数。相反,您只需要主要导出(ES6 中的 export default
,Node.js 中的 module.exports
对象)。
或者,您可以这样做
import moment, * as moments from 'moment';
获取矩函数 as moment
,以及对象 moments
的所有其他属性。当将这样的 ES5 导出转换为 ES6 样式时,这没有多大意义,因为 moment
将保留相同的属性。
这对我有用:
import moment from 'moment/src/moment'
一个初学者 JS 错误给我同样的错误:
foobar(moment) {
console.log(moment().whatever());
}
命名参数 moment
会中断对 moment()
函数的访问。
官方文档中的AS图momentJs我的问题通过nodeJS方法解决了:
var moment = require('moment');
moment(); //this does not emit the errors
如果你正在使用 ES6 和 babel,要将 moment work 作为一个函数,你必须以这种方式导入它:
import moment from 'moment'
而不是,如文档中所写
import * as moment from 'moment'