2013-01-17 85 views
0

我正在寫使用require.js和AMD的木偶應用程序。 我正在使用Jsoverson版本的Addy Osmany's ToDoMVC作爲代碼示例。即使沒有太多有關此版本的文檔,我也會根據自己的需求進行調整。

每當我打開我的網頁我在瀏覽器控制檯得到這404錯誤:骨幹木偶依賴沒有與RequireJS發現

GET http://127.0.0.1:8000/static/js/backbone.wreqr.js 404 (NOT FOUND) require.js:1836 
Uncaught Error: Script error 
http://requirejs.org/docs/errors.html#scripterror require.js:160 
GET http://127.0.0.1:8000/static/js/backbone.eventbinder.js 404 (NOT FOUND) require.js:1836 
GET http://127.0.0.1:8000/static/js/backbone.babysitter.js 404 (NOT FOUND) require.js:1836 
Uncaught Error: Script error 
http://requirejs.org/docs/errors.html#scripterror 

現在,我已經看到backbone.wreqr「是decupling骨幹和Backbone.Marionette應用模塊和組件的基礎設施」以書面形式Marionette的author。另外backbone.eventbinderbackbone.babysitter是作者寫的項目。

1)我不明白爲什麼我應該包含這些文件,考慮到我遵循的代碼示例沒有使用它們中的任何一個,並且它工作得很好。
2)無論如何,這些文件都是錯誤路徑所必需的。我的應用程序的組織以這種方式:

Staticfiles/ 
|__js/ 
| app.js 
| main.js 
| models/ 
| ectr. 
|__lib/ 
    backbone/ 
     Backbone.js 
     Marionette.js (AMD version) 
     Underscore.js 
     ectr. 

那麼,爲什麼它是在js/文件夾下尋找那些文件?
3)這是一個Require.js問題,或者它只是我的js應用程序中的錯誤?

回答

2

需要這些文件木偶正常工作,但筆者從木偶脫鉤他們,使他們可以用在其他項目也一樣。

,我建議您下載木偶的捆綁版本,其擁有所需的全部相關文件包括:

http://marionettejs.com/#download

+0

我的錯誤,我沒有注意到有一個捆綁版本。最可能的是我遵循的例子的作者使用了這個例子。 謝謝! – Leonardo

1

RequireJS假定您的所有腳本都位於與您的main.js文件相同的基本目錄中。

如果你想指定不同的基本目錄,使用baseUrl配置選項:

<!-- In main.js --> 
require.config({ 
    baseUrl: "/another/path" 
}); 
+0

謝謝,現在更清楚爲什麼它在「錯誤的路徑」尋找。 – Leonardo

2

如果你想堅持用木偶的依賴版本(例如,您正在使用JamJS和我一樣),你可以將它們包含在你的main.js配置中。例如,這裏是我的:

require.config({ 
    paths: { 
      marionette: 'lib/Backbone.Marionette/lib/core/amd/backbone.marionette', 
      'backbone.babysitter': 'lib/Backbone.BabySitter/lib/amd/backbone.babysitter', 
      'backbone.wreqr': 'lib/Backbone.Wreqr/lib/amd/backbone.wreqr' 
    } 
}); 

這在應用程序的主要require()調用之前進行。