Backbone - 无法读取undefined的属性'fn'

时间:2013-11-20 12:04:54

标签: javascript requirejs

下面给出了一个错误“无法读取未定义的属性'fn'”,因为它无法找到jquery。

requirejs.config({
  baseUrl: "/static/javascript",
  paths: {
    jquery: "vendor/jquery",
    underscore: "vendor/underscore"
  },
  shim: {
    underscore: {
      exports: "_"
    }
} });
require(["underscore","jquery"],function(un){


    console.log("jQuery version: ", $.fn.jquery);
    console.log("underscore identity call: ", _.identity(5));
  console.log("underscore identity call: ", un.identity(5));
});

但是,如果我将代码更改为以下内容:

requirejs.config({
  paths: {
    jquery: "vendor/jquery",
    underscore: "vendor/underscore"
  },
  shim: {
    underscore: {
      exports: "_"
    }
} });
require(["underscore","vendor/jquery"],function(un){


    console.log("jQuery version: ", $.fn.jquery);
    console.log("underscore identity call: ", _.identity(5));
  console.log("underscore identity call: ", un.identity(5));
});

现在可以使用。如果你看,路径是一样的。为什么我的系统有这样的baseURL问题?第一个代码怎么了?

1 个答案:

答案 0 :(得分:0)

我认为您需要在此声明您将使用的全局

require(["underscore","jquery"],function(un, $ /* <- insert here */){

console.log("jQuery version: ", $.fn.jquery); // <- so here $ exists, $.fn too

在第二个例子中它起作用,因为我想 jQuery,Backbone,Underscore使用全局函数$,_等等自我注册,即使与RequireJS垫片一起使用也是如此。