背景:我正在尝试将这个包Moment-recur从Bower移到我们的Angular 1.5应用中的NPM并遇到一些麻烦。该程序包取决于Moment并将其功能扩展为
moment.recur = function(start, end) {
// If we have an object, use it as a set of options
if (start === Object(start) && !moment.isMoment(start)) {
return new Recur(start);
}
// else, use the values passed
return new Recur({ start: start, end: end });
};
这就是我所做的:从bower卸载了包,通过npm安装并更新了引用包的index.js:
自:
window.moment = require('moment');
require('Bower_Components/moment-recur/moment-recur.js');
要:
window.moment = require('moment');
require('moment-recur');
问题: 当我运行我们的单元测试(karma)时,所有引用recur函数的测试都会破坏。我看到的错误是:
TypeError: moment(...).recur is not a function
我在Moment-Recur包的js文件中包含了控制台日志,并且在运行应用程序时可以看到。但是,我不明白为什么recur功能暂时无法使用。
我迷失在这里,不知道如何找出原因。如果您需要我从应用程序发布任何其他配置设置,请告诉我。
答案 0 :(得分:0)
我最终解决了这个问题。尽管自问这个问题已经一年多了,但我认为答案(根据我的记忆)可能会对某人有所帮助。
解决此问题的原因是:
window.moment = require('moment-recur')
代替
window.moment = require('moment')
我相信这是由于recur处理即时信息包的方式。仔细查看src代码是否递归,似乎表明它返回了具有某些功能的矩对象。这也许可以解释为什么在我的情况下仅附加一下矩即可。