3

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

问题: 当我运行我们的单元测试(业力)时,所有引用 recur 函数的测试都被破坏了。我看到的错误是:

TypeError: moment(...).recur is not a function

我在 Moment-Recur 包的 js 文件中包含了控制台日志,并且在我运行应用程序时可以看到它。但是,我不明白为什么 recur 功能暂时不可用。

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

4

1 回答 1

0

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

在我的案例中解决问题的是这样做:

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

代替

window.moment = require('moment')

我相信这是因为 recur 处理 moment 包的方式。粗略查看 recur 的 src 代码似乎表明它返回了一个带有一些附加功能的时刻对象。这可以解释为什么在我的情况下只附加 moment-recur 就足够了。

于 2019-04-10T21:11:10.587 回答