2017-10-14 7 views
1

Je suis d'essayer Jasmine conjointement avec moment.js, mais je reçois cette erreur ...obtenir un moment.moment d'erreur est pas une fonction, en utilisant Jasmine et Moment.js

debug.js:21 Uncaught TypeError: (0 , _moment.moment) is not a function 

pas sûr si c'est lié à moment.js ou si je le configure incorrectement. Appréciez toute aide.

//script.js 
 

 
import { moment } from 'moment'; 
 

 
export class Age { 
 
    
 
    constructor(age, secondDate) { 
 
    this.age = age; 
 
    this.secondDate = secondDate; 
 
    } 
 

 
    getSecondsBetweenTwoDates(age, secondDate){ 
 
    age = moment(this.age).format('l'); 
 
    secondDate = moment(this.secondDate).format('l'); 
 
    //differenceInSeconds = moment((this.secondDate).diff(this.age, 'days')); 
 
    differenceInDays = age.diff(secondDate, 'days'); 
 
    //let differenceInDays = this.age - this.secondDate 
 
    return differenceInDays; 
 

 
    } 
 
} 
 

 

 
//age-spec.js 
 

 
import { Age } from './../js/age.js'; 
 

 
describe('Age', function() { 
 
    
 
    let reusableDate, 
 
     today, 
 
     testDate = '2016-10-05', 
 
     date = '2016-10-10'; 
 

 
    beforeEach(() => { 
 
    reusableDate = new Age(date, testDate); 
 
    console.log(reusableDate); 
 
    const mockedDateAndTime = '2017-03-02 00:00:00'; 
 
    today = moment(mockedDateAndTime).toDate(); 
 
    console.log('this is today', today); 
 
    jasmine.clock().mockDate(today); 
 
    }); 
 

 
    it('should return the difference between today',() => { 
 
    console.log(date); 
 
    console.log(testDate); 
 
    console.log(reusableDate.getSecondsBetweenTwoDates(date, testDate)); 
 
    console.log(typeof(reusableDate.getSecondsBetweenTwoDates)); 
 
    //expect(5).toEqual(reusableDate.getSecondsBetweenTwoDates()); 
 
    }); 
 

 

 
});

Je ne suis pas en utilisant le bloc beforeeach du tout, c'était juste quelque chose que j'ai trouvé sur Google, et il essayait ... J'ai aussi installé un plugin moment karma comme ceci:

cadres: [ 'jquery-3.2.1', 'jasmin', 'browserify', 'moment-2.9.0'],

plugins: [ 'karma-jquery', « karma- browserify ', karma-moment ", 'karma jasmin', 'karma-chrome-lance', 'karma-jasmin-html-journaliste' ]

Répondre

1

Il n'y a pas d'exportation nommée moment dans le package moment. La plupart des packages NPM sont CommonJS/UMD et leur exportation principale est module.exports. Même si moment a été écrit as ES module with default export, il peut être importé en tant que module UMD aussi, car il a different entry points for different environments.

Il devrait être

import * as moment from 'moment'; 

ou

import moment from 'moment'; 

Le choix peut dépendre de la configuration du projet. En règle générale, * as reflète mieux l'exportation CommonJS réelle et est moins susceptible de causer des problèmes si le projet a été configuré pour revenir aux modules CJS lors du regroupement.

+0

Merci pour la réponse, je n'étais pas au courant de cela. – Lucky500

0

je fait une erreur stupide, pour une raison quelconque mon ES6 La syntaxe d'importation en haut du fichier ne fonctionnait pas.

J'ai changé cela sur mon fichier script.js: import {moment} de 'moment';

à ceci: var moment = require ('moment');

+0

Cela ne fonctionne pas pour une raison très spécifique. Parce qu'il n'y a pas d'exportation nommée 'moment '. – estus