javascript - img - title html
SystemJS-el momento no es una funciĆ³n (2)
Estoy usando JSPM
, AngularJS
, TypeScript
, SystemJS
y ES6
y mi proyecto se está ejecutando bastante bien ... a menos que intente usar momentJS.
Este es el error que recibo:
TypeError: el momento no es una función
Esto es parte del código:
import * as moment from ''moment'';
Más:
var momentInstance = moment(value);
Si lo depuro, el momento es un objeto no una función:
Así es como se ve mi paquete JSPM de moment.js:
module.exports = require("npm:[email protected]/moment.js");
He leído mucho y no pude encontrar una manera de resolver esto ... ¿alguna idea?
Algunas cosas que he leído / intentado:
¿Cómo usar momentjs en TypeScript con SystemJS?
https://github.com/angular-ui/ui-calendar/issues/154
https://github.com/jkuri/ng2-datepicker/issues/5
Los sistemas de módulos de typcript en momentJS se comportan de manera extraña
https://github.com/dbushell/Pikaday/issues/153
¡Gracias!
Esto funcionó para mí:
import moment from ''moment/src/moment''
Simplemente elimine la agrupación ( * as
) de su declaración de importación:
import moment from ''moment'';
Sin profundizar demasiado en el código fuente , parece que el moment
generalmente exporta una función, que tiene todo tipo de métodos y otras propiedades asociadas.
Al usar * as
, efectivamente estás agarrando todas esas propiedades y uniéndolas a un nuevo objeto, destruyendo la función original. En su lugar, solo desea la exportación principal ( export default
en ES6, module.exports
object en Node.js).
Alternativamente, podrías hacer
import moment, * as moments from ''moment'';
para obtener la función de momento como moment
, y todas las demás propiedades en un objeto llamado moments
. Esto tiene un poco menos sentido al convertir las exportaciones de ES5 de este modo al estilo de ES6, porque el moment
conservará las mismas propiedades.