web-dev-qa-db-ja.com

TypeError:moment()。tzは関数ではありません

ジャスミンを使用してテストすると、このエラーが発生します。

TypeError:moment.tzは関数ではありません

私がテストしようとしているコードは

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

修正する

Node.jsを使用している場合、誤って使用している可能性があります

const moment = require('moment'); // モーメント

の代わりに

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

また、moment-timezoneがインストールされていることを確認してください

npm install moment-timezone --save

説明

タイムゾーンなしで瞬間を要求するバグは、require('moment')で瞬間をインストールし、後でnpm install moment-timezoneに決定し、requireの更新を忘れることで発生する可能性があります。

73
Matt Goodrich

私の下のコード...

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

私もこの問題に遭遇しました。何年も機能しますが、リファクタリング後は機能しません。私が調査したように、[email protected]moment@>=2.9.0に依存しますが、これはmoment自体とは異なる場合があります。

私の場合、moment-timezone[email protected]を使用し、moment自体のバージョンは2.18.1です。原因moment-timezone装飾間違ったmomentのバージョン。

Yarn.lockを次のように変更しました。

[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=

この場合、momentmoment-timezoneを互いの代わりに使用できます。

1
Xu Tongbin