使用茉莉花测试时,出现此错误。
TypeError:moment.tz不是函数
我尝试测试的代码是
let myDate = moment().tz(undefined, vm.timeZone).format('YYYY-MM-DD');
Answers:
如果您使用的是Node.js,则可能不小心使用了
const moment = require('moment');
//瞬间
代替
const moment = require('moment-timezone');
//时区
另外,请确保您已安装带有
npm install moment-timezone --save
要求时间没有时区的错误可能发生在安装时与时require('moment')
,之后决定npm install moment-timezone
,然后忘记更新require
。
moment(new Date())
为just moment()
。我使用npm install命令编辑了响应,因此请在任何环境(您的本地计算机,同事的计算机,生产计算机)上再次尝试它们。
npm i
,它将安装我的moment@2.24.0
。我不知道为什么,但是npmmoment-timezone
用子存储库node_modules
和安装moment@2.24.0
,所以我使用的lib不会被更新。在生产中,我没有错误时间的子node_module目录。为什么npm
每次都在计算机上执行此操作?我在两台计算机上都使用相同的npm版本。
package-lock.json
,将其删除/npm i
并修复了该问题:/
下面的代码对我来说...
import moment from 'moment';
import 'moment-timezone';
import moment from 'moment-timezone'
对于Node.js,根据原始文档: moment js文档
你应该做
npm install moment-timezone
然后像这样使用
var moment = require('moment-timezone');
moment().tz("America/Los_Angeles").format();
我也遇到了这个问题。它可以工作很多年,但是经过重构之后,它就不起作用了。根据我的调查,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=
moment
moment-timezone
在这种情况下,&可以互相替代。
时刻应该是一个函数调用。所以用let myDate = moment().tz(...)
有关更多详细信息,请参见https://momentjs.com/timezone/docs/。
编辑
您还应确保通过正确的npm安装并要求(对于Node)或正确的脚本标签(对于常规浏览器使用)将时区扩展包括在时刻库中。请参阅链接的文档以获取要包含的库/脚本。
第二编辑
如果有人已经将这个问题卷入了+120可接受答案的问题中,那么:
该建议moment
是一个函数,需要使用方括号,是指所发布问题的未经编辑的版本,其语法如下:
let myDate = moment.tz(undefined, vm.timeZone).format('YYYY-MM-DD');