2016-04-06 2 views
0

Ich versuche erweitern Moment.js ein anderes Plugin (https://github.com/leonardosantos/momentjs-business), aber ich habe den folgenden Fehler:Erweiterung momentjs

Uncaught Auslöser Range: Maximale Call-Stack-Größe überschritten

Hier mein Code:

(function() 
{ 
    var moment = (typeof require !== "undefined" && require !== null) && !require.amd ? require("moment") : this.moment; 

    var originalAddMethod  = moment.fn.add; 
    var originalSubtractMethod = moment.fn.subtract; 
    var originalDiffMethod  = moment.fn.diff; 

    moment.fn.add = function (number , string) 
    { 
     return string === 'business days' ? moment.fn.businessAdd(number , string) : originalAddMethod.apply(this , arguments); 
    } 

}).call(this); 

Was ist falsch? Was ich mache?

+0

Sie sollten Ihre Konsole im Browser überprüfen und sehen, welche Zeile genau den Fehler erzeugt. Es scheint, dass Ihr Call-Stack-Limit erreicht ist. – shivgre

+0

Haben Sie nicht tief in Ihren Code gegraben, aber diese Erweiterung ruft .add. In der Zwischenzeit überschreiben Sie .add. Verdächtiger solltest du bewerten, ob dies das Problem ist. –

+0

Sie finden das Problem Maggie! : D Aber irgendwelche Ratschläge, damit es funktioniert ?! Vielleicht brauche ich den originalen Code fork und rufe stattdessen add Ich rufe originalAddMethod? –

Antwort

0

Sie könnten auf ein Problem stoßen Ich sah eine vor einiger Zeit mit dem gleichen Fehler, mit Datum Prototyp.

Die schnelle Lösung, die für mich ( nicht mit moment.js, aber now.js obwohl) arbeitete, war dies:

if(Date.prototype._toString==undefined) { Date.prototype._toString=Date.prototype.toString; } 

Nicht perfekt, aber zumindest wird es Sie begonnen haben.

+0

Ich habe das Problem gefunden ... Innerhalb der BusinessAdd-Funktion wird Add aufgerufen, weil dies das Stack-Problem ist. Ich falle in rekursives Problem. sehen Sie den Code: https://github.com/leonardosantos/momentjs-business/blob/master/momentjs-business.js#L38 Jede beraten für dieses Problem? : D –