web-dev-qa-db-fra.com

TypeError: moment (). Tz n'est pas une fonction

En testant avec du jasmin, j'obtiens cette erreur.

TypeError: moment.tz n'est pas une fonction

Mon code que j'essaie de tester est

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

Réparer

Si vous utilisez Node.js, vous utilisez peut-être accidentellement

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

au lieu de

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

Assurez-vous également d’avoir installé moment-timezone avec

npm install moment-timezone --save

Explication

Le bogue d'exiger un moment sans fuseau horaire pourrait se produire en installant le moment avec require('moment'), puis en décidant de npm install moment-timezone, Puis en oubliant de mettre à jour le require.

73
Matt Goodrich

Code ci-dessous pour moi ...

import moment from 'moment';
import 'moment-timezone';
15
Purushottam Sadh

J'ai rencontré ce problème aussi. Cela fonctionne pendant des années, mais après un refactor, cela ne fonctionne pas. Comme j'ai enquêté, [email protected] dépend de moment@>=2.9.0, qui pourrait être différent de moment lui-même.

Dans mon cas, moment-timezone les usages [email protected], et moment la version elle-même est 2.18.1. Causes moment-timezone décoré mauvais version de moment.

J'ai changé yarn.lock comme ceci:

[email protected]:
  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"

[email protected], 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 pourrait être utilisé comme substitut l'un de l'autre dans ce cas.

1
Xu Tongbin