Moment: 2.19.1: ya no se puede combinar momento, momento-zona horaria y momento-días hábiles

Creado en 12 oct. 2017  ·  7Comentarios  ·  Fuente: moment/moment

Solía ​​poder combinar moment , moment-timezone , moment-business-days (y moment-range pero ese no es un problema en esta situación), así :

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);

Esto funcionó en todas las versiones antes de actualizar a 2.19.1. Ahora me sale el siguiente error:

Uncaught TypeError: Cannot read property 'setDefault' of undefined

Y lo rastreé hasta que moment.tz ya no se definen.

El problema es que si import moment from moment-timezone entonces moment-business-days ya no funcionará.

Ambiente:

Chrome 61 en MacOS 10.12.6
Compilado con webpack

salida de depuración:

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

¿Algunas ideas?

Bug Up-For-Grabs

Comentario más útil

¿Se solucionará pronto? o hay una solución conocida para esto? permanecer en 2.18.1 podría no ser una opción por mucho más tiempo ...

Todos 7 comentarios

Creo que estoy obteniendo algo similar.

Usando import moment from 'moment-timezone' en esta línea:

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

Lanza este error:

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

Volviendo a 2.18.1 funciona bien.

Veo un error similar. moment-timezone solo debería agregar nuevos métodos a moment , y luego devolver el objeto moment . Sin embargo, algo en 2.19.1 está causando que moment-timezone devuelva una instancia completamente diferente a 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

Lo mismo para 2.19.0 y 2.19.1

¿Se solucionará pronto? o hay una solución conocida para esto? permanecer en 2.18.1 podría no ser una opción por mucho más tiempo ...

¿Está seguro de que este problema persiste con Moment 2.24.0 y moment-timezone 0.5.26? Si lo hago:

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

No parece que tenga problemas para usar moment.tz

Vuelva a abrir si aún tiene problemas.

Esto sigue siendo un problema, aunque.

require ('moment'). versión // 2.24.0
require ('momento') === require ('momento-zona horaria') // verdadero

require ('moment'). versión // 2.25.3
require ('momento') === require ('momento-zona horaria') // falso

require ('moment'). versión // 2.26.0
require ('momento') === require ('momento-zona horaria') // falso

require ('moment'). versión // 2.27.0
require ('momento') === require ('momento-zona horaria') // falso

Entonces, desde la versión 2.24.0 no puedo establecer zonas horarias. Esto es un verdadero fastidio.

¿Fue útil esta página
0 / 5 - 0 calificaciones