SystemJS moment n'est pas une fonction
Je suis en utilisant JSPM
, AngularJS
, TypeScript
, SystemJS
et ES6
et mon projet est en marche assez bien... à moins que j'essaie d'utiliser momentJS.
C'est l'erreur que je reçois:
TypeError: le moment n'est pas une fonction
C'est une partie du code:
import * as moment from 'moment';
Plus:
var momentInstance = moment(value);
Si je le débogage, le moment est un objet n'est pas une fonction:
C'est ce que mon moment.js JSPM paquet ressemble:
module.exports = require("npm:[email protected]/moment.js");
J'ai beaucoup lu et je ne pouvais pas trouver un moyen de résoudre ce... des idées?
Certaines choses que j'ai lu/essayé:
Comment utiliser momentjs en caractères d'imprimerie avec SystemJS?
https://github.com/angular-ui/ui-calendar/issues/154
https://github.com/jkuri/ng2-datepicker/issues/5
Tapuscrit systèmes de modules sur momentJS se comporte bizarrement
https://github.com/dbushell/Pikaday/issues/153
Merci!
- qui avez-vous fait de l'injection de dépendance de moment angulaire ?
- salut, merci pour votre commentaire. Je suis désolé, mais que voulez-vous dire pourquoi? Si oui, que recommanderiez-vous comme alternative? Merci encore.
Vous devez vous connecter pour publier un commentaire.
Simplement supprimer le groupement (
* as
) à partir de votre déclaration d'importation:Sans creuser trop profondément dans le le code source, il ressemble à
moment
généralement exporte une fonction, qui a toutes sortes de méthodes et d'autres propriétés attachées à elle.En utilisant
* as
, vous êtes effectivement saisir l'ensemble de ces propriétés et de les attacher à un nouveau objet, en détruisant la fonction d'origine. Au lieu de cela, vous voulez juste le chef de l'exportation (export default
dans l'ES6,module.exports
objet dans Node.js).Alternativement, vous pourriez faire
pour obtenir le moment de fonction comme
moment
, et toutes les autres propriétés à un objet appelémoments
. Cela fait un peu moins de sens lors de la conversion de ES5 les exportations de ce genre pour ES6 style, parce quemoment
conserve les mêmes propriétés.import
. À mon avis, c'est un peu trop bref instant, mais il couvre la plupart de la syntaxe.import * as moment from 'moment'
qui m'a donné le "moment n'est pas une fonction d'erreur". En modifiant comme vous l'avez suggéré, àimport moment from 'moment'
change juste l'erreur demoment_1.default is not a function
. ce qui se passe ici? (Il semble que le fait de changer la façon dont je l'importation a causé un tapuscrit à compiler monmoment()
appel de fonction dans unmoment_1.default
appel de fonction.)Cela a fonctionné pour moi:
Un débutant en JS erreur qui me donnait le même message d'erreur:
De nommer un paramètre
moment
pauses accès à lamoment()
fonction.J'ai eu le code suivant format et j'ai obtenu une erreur similaire.
puis j'ai déménagé le objet d'entrée à l'intérieur de la EventExplorer classe comme indiqué ci-dessous