TypeError:moment()。tz不是函数

时间:2017-10-31 23:37:41

标签: javascript unit-testing jasmine momentjs

使用jasmine进行测试时,我收到此错误。

TypeError:moment.tz不是函数

我尝试测试的代码是

let myDate = moment().tz(undefined, vm.timeZone).format('YYYY-MM-DD'); 

6 个答案:

答案 0 :(得分:53)

修复

如果您正在使用Node.js,则可能会意外使用

const moment = require('moment'); // 时刻

而不是

const moment = require('moment-timezone'); // moment-timezone

另外,请确保已使用

安装了时刻 - 时区

npm install moment-timezone --save

说明

通过require('moment')安装片刻,稍后决定npm install moment-timezone,然后忘记更新require,可能会出现需要片刻而没有时区的错误。

答案 1 :(得分:10)

下面是我的代码...

import moment from 'moment';
import 'moment-timezone';

答案 2 :(得分:2)

对于打字稿:截至 2021 年 4 月有效

import moment from 'moment';
import 'moment-timezone';

cont x = moment.tz('America/Los_Angeles').format('YYYY-MM-DD HH:mm:ss ZZ');

cont y = moment().isBetween(
            moment.tz('1-1-2021', 'America/Los_Angeles'),
            moment.tz('1-1-2021', 'America/Los_Angeles').add(2, 'hours'),

答案 3 :(得分:1)

我也遇到了这个问题。它可以工作很多年,但是经过重构之后,它就不起作用了。根据我的调查,moment-timezone@0.5.13取决于moment@>=2.9.0,这可能与moment本身不同。

在我的情况下,moment-timezone使用moment@2.24.0,而moment本身的版本是2.18.1。导致moment-timezone装饰的{em>版本错误的{em> 版本的moment

我已经这样改变了yarn.lock:

moment-timezone@0.5.13:
  version "0.5.13"
  resolved "https://arti-dev.ss.aws.fwmrm.net/api/npm/fw-npm/moment-timezone/-/moment-timezone-0.5.13.tgz#99ce5c7d827262eb0f1f702044177f60745d7b90"
  integrity sha1-mc5cfYJyYusPH3AgRBd/YHRde5A=
  dependencies:
    moment ">= 2.9.0"

moment@2.18.1, moment@>= 2.9.0:
  version "2.18.1"
  resolved "https://arti-dev.ss.aws.fwmrm.net/api/npm/fw-npm/moment/-/moment-2.18.1.tgz#c36193dd3ce1c2eed2adb7c802dbbc77a81b1c0f"
  integrity sha1-w2GT3Tzhwu7SrbfIAtu8d6gbHA8=

在这种情况下,

momentmoment-timezone可以互相替代。

答案 4 :(得分:1)

对于Node.js,根据原始文档: moment js documentation

你应该做

npm install moment-timezone

然后像这样使用它

var moment = require('moment-timezone');
moment().tz("America/Los_Angeles").format();

答案 5 :(得分:-1)

时刻应该是函数调用。所以请使用let myDate = moment().tz(...)

有关详细信息,请参阅https://momentjs.com/timezone/docs/

修改

您还应该确保通过正确的npm install和require(对于Node)或正确的脚本标记(用于一般浏览器用法)将时区扩展包含到时刻库中。请参阅要包含的库/脚本的链接文档。