TypeError: moment().tz is not a function

Sanath picture Sanath · Nov 1, 2017 · Viewed 55.8k times · Source

When testing using jasmine, I am getting this error.

TypeError: moment.tz is not a function

My code that I try to test is

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

Answer

Matt Goodrich picture Matt Goodrich · Feb 10, 2018

Fix

If you're using Node.js, you may accidentally be using

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

instead of

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

Also, make sure you have installed moment-timezone with

npm install moment-timezone --save

Explanation

The bug of requiring moment without timezones could occur by installing moment with require('moment'), later deciding to npm install moment-timezone, and then forgetting to update the require.