我有一個Web應用程序使用Require來加載依賴關係。我有一組JS庫,使用Require config.shim
對象包含在內。Require.js優化程序錯誤地訂購填充程序依賴關係
兩個這樣的例子庫是:
require.config({
shim: {
"libs/leaflet": {
exports: "L"
}
"libs/leaflet-dvf": {
deps: ["libs/leaflet"],
exports: "L"
}
}
的第二個庫,leaflet-dvf
需要第一,leaflet
。第二個插件是第一個插件,它取決於第一個庫定義的全局範圍變量L
。
當我使用Require運行應用程序時,一切正常。我可以包括墊片庫,並且一切都很好。沒問題。
當我通過Require r.js Optimizer運行此代碼時,問題就出現了。優化器在構建單個優化的JS文件時會錯誤地排序依賴關係。在構建的文件中,leaflet-dvf
代碼將在leaflet
代碼之前出現。這會導致JS運行時錯誤,因爲依賴插件找不到所需的全局範圍變量L
。
我構建的配置是這樣的:
({
baseUrl: "../js",
paths: {
"requireLib": "../js/libs/require"
},
include: ["requireLib"],
name: "Main",
out: "bin/Main-built.js",
optimize: "none",
wrapShim: true
})
當我運行了優化,使用犀牛,它建立我的輸出文件。在Main-built.js
文件中,插件的代碼將出現在所需的庫之前。這會導致L undefined error
。
如何讓Optimizer尊重我的Shims的依賴順序,以便在我的Optimized JS文件中正確排列庫文件?
[requireJS順序執行用於非AMD JS文件]的可能重複(http://stackoverflow.com/questions/17914786/requirejs-sequential-execution-for-non-amd-js-files) –
這有點晚,但是如果你還沒有解決這個問題,你也需要在你的r.js配置文件中使用shim。應該修復它。 – Vishwanath