2014-09-16 3 views
0

Je pourrais faire avec de l'aide en mettant en œuvre FormulaJS - côté client seulement. J'ai un fichier Excel avec plusieurs formules à convertir en javascript.Implémentation du côté client FormulaJS uniquement?

La documentation de FormulaJS dit d'utiliser requireJS mais je suis incapable de l'implémenter correctement. J'ai l'erreur suivante:

Erreur non interceptée: Le nom du module "lib/compatibility" n'a pas encore été chargé pour le contexte: _. Utilisez require ([]) http://requirejs.org/docs/errors.html#notloaded

Ceci est mon en-tête du document:

<!doctype html> 
<html> 
<head> 
<meta charset="UTF-8"> 
<title>Calc tests</title> 
<script type="text/javascript" src="js/jquery.min.js"></script> 
<script type="text/javascript" src="js/requirejs-master/require.js"></script> 
<script type="text/javascript" src="js/formula.js-master/index.js"></script> 


<script type="text/javascript" src="js/what-income.js"></script> 
</head> 

<body> 



</body> 
</html> 

Vive

Répondre

1

Vous avez posé une question qui a sa propre réponse:

If the error message includes Use require([]), then it was a top-level require call (not a require call inside a define() call) that should be using the async, callback version of require to load the code:

require(['foo'], function (foo) { 
    //foo is now loaded. 
}); 

Donc, ce que vous avez probablement dans votre code a un node.js exigent le style, au lieu de callback version of require to load the code.

Je pense qu'il est ce que vous avez dans js/formula.js-master/index.js chemin:

var categories = [ 
    require('./lib/compatibility'), 
    require('./lib/database'), 
    require('./lib/engineering'), 
    require('./lib/logical'), 
    require('./lib/math-trig'), 
    require('./lib/text'), 
    require('./lib/date-time'), 
    require('./lib/financial'), 
    require('./lib/information'), 
    require('./lib/lookup-reference'), 
    require('./lib/statistical'), 
    require('./lib/miscellaneous') 
]; 

for (var c in categories) { 
    var category = categories[c]; 
    for (var f in category) { 
    exports[f] = exports[f] || category[f]; 
    } 
} 

Et si vous prenez un meilleur regard sur votre code, vous verrez:

var compatibility = require('./lib/compatibility'); 

qui a le style nodejs de require et n'est pas async, alors que si vous voulez utiliser RequireJS vous devriez le faire comme:

require(['./lib/compatibility'], function (compatibility) { 
    //your code goes here 
}); 

La conclusion finale est, vous utilisez la mauvaise bibliothèque requise. Quel est le bon?

Heureusement il existe, ce qui peut être très utile d'utiliser des modules NodeJS dans le navigateur: Browserify

Vous pouvez trouver des démos here, il est dit que:

Browsers don't have the require method defined, but Node.js does. With Browserify you can write code that uses require in the same way that you would use it in Node.

+0

Merci pour votre Aidez-moi! Je vais essayer Browserify et poster si succès sur non. – RBH

+0

Merci, oui ça a marché! Après une journée et 1/2 de travail sur les erreurs d'installation de Browserify sur Mac OsX. – RBH

+0

Oui, cela a toujours été un processus douloureux de démarrer avec des modules de nœuds, mais cela devient plus facile au fur et à mesure que vous avancez. Je vous recommande vraiment de donner à [Yeoman] (http://yeoman.io/) un essai pour votre processus d'échafaudage qui est vraiment utile. –

Questions connexes