Anoche migré una aplicación de un servidor Centos a otro; al hacerlo, lo único que no funciona es FullCalendar.
En el servidor "antiguo" con exactamente los mismos datos y las mismas versiones de jQuery, moment y Fullcalendar, el calendario se muestra sin problemas.
En el servidor "nuevo" me sale el error:
fullcalendar.min.js:963 Uncaught TypeError: Cannot read property 'stripTime' of undefined at D (fullcalendar.min.js:963) at b (fullcalendar.min.js:959) at S (fullcalendar.min.js:955) at E (fullcalendar.min.js:949) at fullcalendar.min.js:816 at Object.success (fullcalendar.min.js:848) at j (jquery.min.js:2) at Object.fireWith [as resolveWith] (jquery.min.js:2) at x (jquery.min.js:4) at XMLHttpRequest.<anonymous> (jquery.min.js:4) D @ fullcalendar.min.js:963 b @ fullcalendar.min.js:959 S @ fullcalendar.min.js:955 E @ fullcalendar.min.js:949 (anonymous) @ fullcalendar.min.js:816 success @ fullcalendar.min.js:848 j @ jquery.min.js:2 fireWith @ jquery.min.js:2 x @ jquery.min.js:4 (anonymous) @ jquery.min.js:4La línea 963 es el contenido de esta función:
function D(t) { null == t.allDay && (t.allDay = !(t.start.hasTime() || t.end && t.end.hasTime())), t.allDay ? (t.start.stripTime(), t.end && t.end.stripTime()) : (t.start.hasTime() || (t.start = I.rezoneDate(t.start)), t.end && !t.end.hasTime() && (t.end = I.rezoneDate(t.end))) }Encontré una pregunta idéntica en Utilizo fullcalendar para hacer el evento pero no hay respuesta; también la única mención de striptime en los documentos de FullCalendar está en https://fullcalendar.io/docs/utilities/Moment/ donde habla de eso se usa para convertir un momento cronometrado en ambiguo, ¡pero eso no significa mucho para mí!
No puedo reproducirlo, lo que me hace pensar que hay algo en la configuración del servidor que causa el problema, ya que esa es la única diferencia entre lo antiguo y lo nuevo. Intenté actualizar a las últimas versiones de Moment y FullCalendar, pero ninguna hizo ninguna diferencia.
Después de una gran cantidad de prueba y error, encontré el problema: uno de mis eventos tenía una fecha de inicio nula y eso estaba causando el problema.
Los documentos en https://fullcalendar.io/docs/utilities/Moment/ se refieren a striptime que se usa para Momentos ambiguamente cronometrados que son "Debajo del capó, estos momentos se representan en modo UTC con un tiempo de 00:00: 00"
Luego revisé todos mis eventos en busca de alguno con una hora de 00:00:00; de hecho, encontré bastantes, así que los eliminé y el problema siguió ocurriendo.
Entonces decidí buscar entradas donde la fecha fuera 0 (o nula en este caso) y encontré una que, cuando la eliminé, corrigió el problema y el calendario ahora se muestra como debería.
No estoy seguro de por qué esto no fue un problema en el servidor anterior, pero sí en este problema, pero si alguien más está en la misma situación, verifique las fechas nulas.