2013-03-18 172 views
1

我一直在使用之前需要,但從來沒有碰到了這個問題, 也許我有一個路徑錯誤的地方,但這個是我filestructure:requirejs無法找到模塊返回undefined

js 
├───main.js 
│ 
├───app 
│ ├───app.js 
│ ├───hello.js 
│ ├───world.js 
│ │ 
│ └───models 
│  └───game.js 
│ 
└───vendor 
    ├───jquery.js 
    └───require.js 

main.js

require.config({ 
    paths: { 
     'jquery': '../js/vendor/jquery' 
    }, 
    shim: { 
     'jquery': { 
      exports: '$' 
     } 
    } 
}); 

require(['app/app', 'jquery', 'app/models/game'], function (App, $, Game) { 
    console.log(arguments); 
    $(function() { 
     console.log('why is my App undefined?', App); 
     App.init(); 

    }); 
}); 

應用程序/ app.js

define('App', ['hello', 'world'], function (hello, world) { 

    var App = {}; 

    App.init = function() { 
     alert(hello + ' ' + world); 
    }; 

    return App; 
}); 

代碼火災正常的,但是我DEPE應用程序或hello或世界模塊的應用程序似乎失敗,應用程序日誌爲未定義,所以我的遊戲模塊。

應用程序/應用程序應該是我的應用程序模塊的正確路徑或我認爲是錯誤的?

更新

我想爲App資本的固定問題(但在同一時間,我把在Jlange的評論擺動,所以我從index.html。這似乎確定發射了app/App模塊,但持續的發展後,從內再次出現了。

我可以加載在同一目錄下的每個模塊就好了,但我不能從子目錄模塊。

就像最初的例子無法加載應用程序/應用程序主模塊e,app/App模塊也可以不導入模型/遊戲模塊。

我從字面上不知道這可能是什麼,就像我之前說過的,我曾經與requirejs合作過,並沒有遇到過這個問題。

更新2 我可以做,如果我把所有的模塊名字它的工作,

define([dependencies], function (dependencies) {}); 

工作正常 但只要我把它變成一個名爲模塊我找不到它

define("moduleA", ['subdir/moduleB'], function (moduleB) { 
    console.log(moduleB); // >> undefined 
}); 
define("subdir/moduleB", [dependencies], function (dependencies) { return 'B'; }); 
+0

爲什麼在你的require語句中包含jquery?我通常在應用程序文件中定義它,比如'define(['jquery',],function($)' – Jlange 2013-03-18 21:00:54

+0

以及我在我的主要版本中,因爲主要有一般需要配置,並引導應用程序,這就是爲什麼它有jQuery包括那裏啓動在文檔就緒狀態的應用程序 – Sander 2013-03-18 23:52:17

+0

很高興你得到它的工作,我真的很感興趣看到解決方案,因爲我使用require.js很多 – Jlange 2013-03-19 16:56:06

回答

2

編輯

AF很多嘗試,修復上面的代碼,並在requirejs幫助頁面中閱讀,我發現了一小段,說最好不要使用命名模塊,並讓優化程序爲您命名。

所以我決定刪除所有的模塊名稱

moduleA.js

define(['subdir/moduleB'], function (moduleB) { 
    console.log(moduleB); // >> 'B' 
}); 

子目錄/ moduleB.js

define([dependencies], function (dependencies) { return 'B'; }); 

這工作就好了... ... 不知道我如何修復使用這些moduleNames,認爲最好命名你的模塊。

+0

它可以在開發中有用,直到文件和目錄結構穩定。 – 2013-04-08 14:24:20

+0

是真實的,但是,您是否必須檢查整個模塊列表才能刪除它們?在大中型應用程序中似乎有點矯枉過正。我正在研究mantrijs,只是我很好奇...並沒有真正計劃它的任何發展。儘管它使用名稱空間而不是文件路徑。 – Sander 2013-04-09 23:00:00

+0

有希望的時候,你的代碼庫開始達到這種尺寸,你的目錄結構已經足夠穩定,不足以保證它。 – 2013-04-10 08:51:47