San*_*ath 41 javascript unit-testing jasmine momentjs
使用jasmine进行测试时,我收到此错误.
TypeError:moment.tz不是函数
我尝试测试的代码是
let myDate = moment().tz(undefined, vm.timeZone).format('YYYY-MM-DD');
Run Code Online (Sandbox Code Playgroud)
Mat*_*ich 81
如果您使用的是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
.
小智 19
下面的代码对我来说...
import moment from 'moment';
import 'moment-timezone';
Run Code Online (Sandbox Code Playgroud)
Dav*_*han 10
对于 Typescript:截至 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'),
Run Code Online (Sandbox Code Playgroud)
小智 10
错误 -> TypeError: (0 , moment_timezone_1.default) 不是函数
这是打字稿错误,默认情况下它需要一些时间作为函数
我通过替换解决了这个问题
import moment from 'moment-timezone'
Run Code Online (Sandbox Code Playgroud)
和
import * as moment from 'moment-timezone'
Run Code Online (Sandbox Code Playgroud)
所以
moment().tz("America/Los_Angeles").format()
Run Code Online (Sandbox Code Playgroud)
小智 5
我也遇到过这个问题。它工作了很多年,但重构后就不起作用了。正如我所调查的,moment-timezone@0.5.13
取决于moment@>=2.9.0
,它可能与其moment
本身不同。
就我而言,moment-timezone
使用moment@2.24.0
,其moment
本身版本是2.18.1
。导致moment-timezone
装饰版本错误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=
Run Code Online (Sandbox Code Playgroud)
moment
在这种情况下, &moment-timezone
可以相互替代。
小智 5
对于 Node.js,根据原始文档: moment js 文档
你应该做
npm install moment-timezone
Run Code Online (Sandbox Code Playgroud)
然后像这样使用它
var moment = require('moment-timezone');
moment().tz("America/Los_Angeles").format();
Run Code Online (Sandbox Code Playgroud)