使用jasmine进行测试时,我收到此错误。
TypeError:moment.tz不是函数
我尝试测试的代码是
let myDate = moment().tz(undefined, vm.timeZone).format('YYYY-MM-DD');
答案 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=
在这种情况下, moment
和moment-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)或正确的脚本标记(用于一般浏览器用法)将时区扩展包含到时刻库中。请参阅要包含的库/脚本的链接文档。