Je viens de mettre à jour les formulaires [email protected] à [email protected] dans mon application Ember.js et maintenant je reçois une erreur. Le moment n'est pas défini lorsque j'introduis moment () dans la console ou l'inclus dans mes scripts.
Sur la documentation, j'ai vu que "depuis la version 2.4.0, l'objet moment exporté globalement est obsolète". Je pense que c'est là le problème, mais je ne sais pas comment je peux placer un moment global dans ember, de sorte que toutes les références à moment () dans notre base de code ne soient pas cassées.
J'ai essayé de mettre à jour la ligne où nous faisions require ("moment") pour var moment = require ("moment") mais le résultat est identique. Même si je mets un débogueur directement après la var moment = ... line, puis que j'entre moment () dans la console, j'obtiens toujours que ce moment n'est pas défini.
Vous voulez la section Browser de la nouvelle documentation.
Alors...
<script src="moment.js"></script>
<script>
moment().format();
</script>
Modifier
Cela dit, il semble que cela vous donnera probablement le même problème.
Il semble que Moment.js essaie de vous encourager à utiliser un gestionnaire de paquets afin de ne pas corrompre l’espace de noms avec des variables globales.
Allez lire sur CommonJS et AMD , et essayez de l'intégrer à votre pile actuelle.
Vous devriez faire quelque chose comme:
var moment = require('moment');
moment().format();
Mais pour utiliser require
, vous avez besoin d’un système de modules tel que ceux mentionnés ci-dessus.
Mais
La solution évidente consiste à restaurer votre version de Moment.js, tant que vous n'avez pas besoin de nouvelles fonctionnalités. Quelle importance peut avoir une mise à jour sur une simple bibliothèque heure/date?
Cela se produit, quand avant moment.js il y a déjà un gestionnaire de paquets/chargeur:
Vous pouvez voir que le moment détecte
module.exports
define.AMD
et s'il n'y a rien de tel, alors global.moment
est attribué.
La variable global
est en réalité window
. La variable factory
est la function
ci-dessous représentant la fermeture de la portée du moment.
Deux possibilités:
a) assurez-vous qu'il n'y a AUCUN gestionnaire/chargeur de paquet CommonJS/SystemJS ... avant <script src="/scripts/moment-with-locales.js">
b) suivez la réponse de @ shennan et chargez l’instant par un gestionnaire de paquet/chargeur, par ex. en utilisant SystemJS:
SystemJS.import('/scripts/moment-with-locales.js').then(function(moment) {
moment.locale('fr');
});