3

我正在尝试使用 Miso ( http://misoproject.com/dataset/ ),并且依赖项之一是 underscore.js。我正在使用 require.js,并在控制台中不断收到错误消息:“未捕获的 ReferenceError:_ 未定义。” 这是我的 main.js 文件:

require(["jquery", "underscore", "miso"], function($, _, miso) {

  $(function() {
    var ds = new Miso.Dataset({
      url : "/data/ma_region.csv",
      delimiter : " ",
    });
  });

});

有任何想法吗?提前致谢。

4

2 回答 2

3

Miso_在全球范围内期待下划线。

在味噌的代码中:

(function(global, _) {

    /* has bunch of stuff using underscore */

}(this, _));

这意味着在最后一部分(this, _)中,它没有对_下划线库的引用,因为它是在 RequireJS 中定义的,这意味着它存在于匿名函数范围内。

因此,您需要_在模块中加载下划线并将 Miso 包装起来,例如:

define(['underscore'], function(_) {

 /** Miso's code here because Miso is expecting the _ **/

});

对于 Miso 网站http://misoproject.com/dataset/tutorials/quickstart上列出的其他依赖项,您需要将其包括在内:

依赖项

如果您选择包含没有内置依赖项的生产版本,您可能需要自己包含它们。数据集需要以下库:

  • LoDash 0.9.0
  • Underscore.math.js(未知版本)
  • 下划线.deferred.js 0.2.0
  • moment.js 1.7.2(用于“时间”数据类型)

如果您使用的是 IE,则需要包含 json2.js:

  • json2.js 2011-10-19

或者,我建议使用已经预先打包依赖项的 Miso 版本,这样您就不必担心这一点。

于 2013-04-02T19:49:11.963 回答
0

确保您的下划线库名为 underscore.js,并且它与您的 javascript 代码位于同一目录中。这是 require.js 的 baseURL。

如果不是这种情况,您应该配置路径。参考http://requirejs.org/docs/api.html#config-paths

于 2013-04-02T19:46:11.137 回答