Javascript 为什么在使用味噌时没有定义?

Javascript 为什么在使用味噌时没有定义?,javascript,requirejs,underscore.js,Javascript,Requirejs,Underscore.js,我正在尝试使用Miso(),其中一个依赖项是underline.js。我正在使用require.js,并且在控制台中不断收到一个错误:“uncaughtreferenceerror:uu未定义”。这是我的main.js文件: require(["jquery", "underscore", "miso"], function($, _, miso) { $(function() { var ds = new Miso.Dataset({ url : "/data/ma_

我正在尝试使用Miso(),其中一个依赖项是underline.js。我正在使用require.js,并且在控制台中不断收到一个错误:“uncaughtreferenceerror:uu未定义”。这是我的main.js文件:

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

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

});

有什么想法吗?提前感谢。

请确保下划线库名为underline.js,并且与javascript代码位于同一目录中。这是require.js的基本URL


如果不是这样,您应该配置路径。请参阅

Miso希望在全局范围内出现
\u
下划线

在味噌的代码中:

(function(global, _) {

    /* has bunch of stuff using underscore */

}(this, _));
这意味着在最后一部分
(this,)
,它没有对
\u
下划线库的引用,因为它是在RequireJS中定义的,这意味着它存在于匿名函数作用域中

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

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

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

});
对于Miso网站上列出的其他依赖项,您需要包括以下内容:

依赖关系

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

  • 洛达斯0.9.0
  • 下划线.math.js(未知版本)
  • 下划线.deferred.js 0.2.0
  • moment.js 1.7.2(用于“时间”数据类型)
如果您使用的是IE,则需要包括json2.js:

  • json2.js 2011-10-19

或者,我建议使用已经对依赖项进行了预打包的Miso版本,这样您就不必担心这个问题。

您使用的是node.js吗?@Kyle,是的,我正在使用nodeI。我认为您的underline.js与javascript文件的路径不同。underline与AMD不兼容,需要应用
shim
config选项。听起来好像味噌也需要它。