2012-08-14 48 views
1

我有以下(非常簡單)模塊定義,在CoffeeScript中:RequireJS模塊的依賴性不被評估

# backbone/routers/appointments_router.js.coffee 
define ["app", "underscore", "backbone"], (App, _, Backbone) -> 
    console.log(Backbone) 

下面是我的配置和東西:

# application.js.coffee 
requirejs.config 
    paths: 
    underscore: "lodash.min" 
    backbone: "backbone" 
    appointmentsRouter: "backbone/routers/appointments_router" 
    "backbone-relational": "backbone-relational" 

requirejs ["app", "underscore", "backbone", "appointmentsRouter"], (App, _, Backbone, AppointmentsRouter) -> 

這裏的發生的事情:當我加載我的頁面,我在控制檯中獲得undefined,即使Backbone被列爲依賴項。更令人費解的是,如果我在控制檯中鍵入Backbone,Backbone 定義爲

Backbone最終如何被評估,但我的appointments_router.js.coffee不知道Backbone?

回答

1

Underscore或Backbone不符合AMD標準,因此定義路徑是不夠的。幸運的是,Require.js提供shim -functionality作爲對此的回答。

所以你必須添加這樣的事情

requirejs.config(// shouldn't this be just require? 
    paths: ..., // don't change these 
    shim: { 
    "underscore": { 
     exports: "_" // define the export 
    }, 
    "backbone": { 
     deps: ["underscore"], // define dependencies for backbone 
     exports: "Backbone" 
    } 
    } 
); 

希望這有助於!

+0

工作。謝謝。並且將'requirejs.config'改爲'require'。 – 2012-08-14 14:07:17