Moment.js ce jour n'est pas toujours retourner une instance de Date

En gros, j'ai besoin de calculer la date d'expiration d'une (très longue durée de vie) cookie, donc je veux faire maintenant + de 99 ans. Comme c'est plus facile lors de l'utilisation d'une bibliothèque comme Moment.js qu'avec JavaScript natif, je suis en train de faire:

var expirationDate = moment().add('years', 99);

Mais j'ai besoin d'un JavaScript Date objet et l'appel de la toUTCString fonction sur elle pour obtenir le correctement chaîne formatée pour le cookie. Donc je suis en train de faire:

var expirationDate = m().add('years', 99).toDate().toUTCString();

Maintenant, quelque chose de très étrange se passe. Quand je lance cette ligne dans un Node.js shell, tout va bien. Mais si je le lance à partir d'un script, il échoue. Le message d'erreur est

TypeError: Object Mon, 24 Oct 2112 07:34:34 GMT n'a pas de méthode 'toUTCString'

qui est correct, car le chose retourné par toDate est pas une instance de Date, mais juste un simple objet ancien. Curieusement, lorsque j'essaie la même chose dans le Node.js REPL, toDate retourne une instance de Date.

Je exécuter les deux, la RÉPLICATION et le script à l'aide Node.js 0.8.25, à la fois sur la même machine. Moment.js est la version 2.3.1.

Aucune idée de ce qui pourrait causer ce problème?

  • Juste pour être sûr, est m un alias pour moment dans votre code ? Ou sont les parenthèses une erreur ?
  • Vous avez tellement raison! m était juste un alias pour moment, mais l'erreur vient de la ligne suivante, où j'ai remis l'objet créé à une fonction, qui a essayé d'appeler toUTCString en interne. Par conséquent, il a échoué. Merci pour de me pointer dans la bonne direction :-)!
  • depuis que vous utilisez déjà momentjs, pourquoi ne pas simplement utiliser moment d'imprimer l'utc chaîne? moment().add('years', 99).utc().format();
InformationsquelleAutor Golo Roden | 2013-10-24