Moment: 2.19.1: больше нельзя комбинировать момент, часовой пояс и рабочие дни

Созданный на 12 окт. 2017  ·  7Комментарии  ·  Источник: moment/moment

Раньше я мог комбинировать moment , moment-timezone , moment-business-daysmoment-range но это не проблема в данной ситуации), вот так :

import 'moment-timezone';
import moment from 'moment-business-days';
import { extendMoment } from 'moment-range';

moment.locale('en-us', {
    week: {
        dow: 1, // Monday is the first day of the week
    },
    holidays: [
        '2017-10-09',
        '2017-12-25',
        '2018-01-01',
        '2018-04-02',
        '2018-05-21',
        '2018-06-25',
        '2018-07-02',
        '2018-09-03',
        '2018-10-08',
        '2018-12-24',
        '2018-12-25',
    ],
    holidayFormat: 'YYYY-MM-DD',
});

moment.tz.setDefault('America/Montreal');

export default extendMoment(moment);

Это работало во всех версиях до обновления до 2.19.1. Теперь я получаю следующую ошибку:

Uncaught TypeError: Cannot read property 'setDefault' of undefined

И я проследил это до moment.tz больше не определяется.

Проблема в том, что если я import moment from moment-timezone то moment-business-days больше не будет работать.

Окружающая среда:

Chrome 61 в MacOS 10.12.6
Скомпилировано с помощью webpack

вывод отладки:

Thu Oct 12 2017 12:29:48 GMT-0700 (PDT)
10/12/2017, 12:29:48 PM
420
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36
2.19.1

Любые идеи?

Bug Up-For-Grabs

Самый полезный комментарий

это будет исправлено в ближайшее время? или есть известная работа для этого? оставаться на 2.18.1 может быть не лучшим вариантом ...

Все 7 Комментарий

Я считаю, что получаю нечто подобное.

Используя import moment from 'moment-timezone' в этой строке:

var deadlineDisplay = moment.duration(deadlineSeconds, "seconds").format("h [hrs], m [min], s [sec]”)

Выдает эту ошибку:

Uncaught TypeError: _momentTimezone2.default.duration(...).format is not a function

Откат на 2.18.1 работает нормально.

У меня похожая ошибка. moment-timezone должен просто добавлять новые методы в moment , а затем возвращать исходный объект moment . Однако что-то в 2.19.1 заставляет moment-timezone возвращать совершенно другой экземпляр, чем moment .

require('moment').version // 2.18.1
require('moment') === require('moment-timezone') // true
require('moment').version // 2.19.1
require('moment') === require('moment-timezone') //false

То же самое для 2.19.0 и 2.19.1

это будет исправлено в ближайшее время? или есть известная работа для этого? оставаться на 2.18.1 может быть не лучшим вариантом ...

Вы уверены, что эта проблема все еще существует с Moment 2.24.0 и моментом-часовым поясом 0.5.26? Если я сделаю:

require('moment-timezone');
var moment = require('moment-business-days');

У меня нет проблем с использованием moment.tz

Пожалуйста, повторно откройте, если у вас все еще есть проблемы.

Но это все еще проблема.

require ('moment'). version // 2.24.0
require ('moment') === require ('moment-timezone') // истина

require ('moment'). version // 2.25.3
require ('moment') === require ('moment-timezone') // ложь

require ('moment'). version // 2.26.0
require ('moment') === require ('moment-timezone') // ложь

require ('moment'). version // 2.27.0
require ('moment') === require ('moment-timezone') // ложь

Итак, начиная с версии 2.24.0 я не могу устанавливать часовые пояса. Это настоящий облом.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги