我可以帮助实施FormulaJS - 仅限客户端。我有一个excel文件,其中有几个公式要转换为javascript。
FormulaJS文档说使用requireJS但我无法正确实现它。我收到以下错误:
未捕获错误:模块名称" lib / compatibility"尚未加载上下文:_。使用require([]) http://requirejs.org/docs/errors.html#notloaded
这是我的文件标题:
<!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>
干杯
答案 0 :(得分:1)
你问过一个有自己答案的问题:
如果错误消息包含Use require([]),那么它是顶级的 需要调用(不是在define()调用中的require调用) 使用异步,回调版本的require来加载代码:
require(['foo'], function (foo) {
//foo is now loaded.
});
因此,您的代码中可能包含node.js
需要的样式,而不是callback version of require to load the code
。
我认为这是 js/formula.js-master/index.js
路径中的内容:
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];
}
}
如果您更好地查看代码,您会看到:
var compatibility = require('./lib/compatibility');
其nodejs样式为require
且不是 异步 ,而如果您想使用RequireJS,则应执行以下操作:
require(['./lib/compatibility'], function (compatibility) {
//your code goes here
});
最后的结论是,您使用的是错误的require库。什么是正确的?
幸运的是,有一个在浏览器中使用nodejs模块非常有用: Browserify
您可以找到演示 here ,有人说:
浏览器未定义 require 方法,但 Node.js 可以。同 Browserify 您可以使用相同的方式编写使用require的代码 你会在Node中使用它。