从Bower转移到NPM时遇到问题(时刻重复)

时间:2017-10-31 14:54:17

标签: javascript angularjs momentjs moment-recur

背景:我正在尝试将这个包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 });
};

src

这就是我所做的:从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功能暂时无法使用。

我迷失在这里,不知道如何找出原因。如果您需要我从应用程序发布任何其他配置设置,请告诉我。

1 个答案:

答案 0 :(得分:0)

我最终解决了这个问题。尽管自问这个问题已经一年多了,但我认为答案(根据我的记忆)可能会对某人有所帮助。

解决此问题的原因是:

window.moment = require('moment-recur')

代替

window.moment = require('moment')

我相信这是由于recur处理即时信息包的方式。仔细查看src代码是否递归,似乎表明它返回了具有某些功能的矩对象。这也许可以解释为什么在我的情况下仅附加一下矩即可。