我有腳本的非常簡單的目錄結構:要求JS無視我的配置
/js/ <-- located in site root
libs/
jquery-1.10.1.min.js
knockout-2.2.1.js
knockout.mapping.js
models/
model-one.js
model-two.js
...
require.js
config.js
由於該網站引擎使用乾淨的URL我使用絕對路徑在<script>
:
<script type="text/javascript" data-main="/js/config.js" src="/js/require.js"></script>
RequireJS配置:
requirejs.config({
baseUrl: "/js/libs",
paths: {
"jquery": "jquery-1.10.1.min",
"knockout": "knockout-2.2.1",
"komapping": "knockout.mapping"
}
});
某處在HTML:
require(["jquery", "knockout", "komapping"], function($, ko, mapping){
// ...
});
所以問題是RequireJS完全忽略了配置文件中定義的baseUrl
和paths
。下面的代碼中所需的每個模塊都會收到404錯誤。我看到在RequireJS試圖加載從/js/
這些模塊沒有任何路徑轉換瀏覽器控制檯:在頁面加載和顯示錯誤
404: http://localhost/js/jquery.js
404: http://localhost/js/knockout.js
404: http://localhost/js/komapping.js
但是我在控制檯輸入和...
> require.toUrl("jquery")
"/js/libs/jquery-1.10.1.min"
這是爲什麼?如何解決這個問題呢?
這是我第一次使用RequireJS的經驗,所以我覺得我跳過了一些非常簡單明顯的東西。請幫助。
更新
剛剛發現了這個問題:Require.js ignoring baseUrl
這絕對是我的情況。我在我的網絡面板中看到config.js
在require(...)
激發自己的依賴加載之前未完全加載。
但我不想將我的require(...)
置於配置中,因爲它對於調用它的頁面非常具體。在以前看過的任何例子中,我從來沒有注意到這種異步性問題。這些例子的作者如何讓他們工作?
你嘗試先刪除斜槓 'JS /庫/'? – paka
@paka剛試過。沒有變化。 –
它與絕對路徑一起工作嗎? – paka