我有一個骨幹應用程序正常運行。它旨在用作第三頁的小部件。不幸的是,我剛剛意識到其中一個頁面已經加載了Backbone /下劃線。如何解決browserify(基於Backbone的應用程序)和require.js在同一頁面上的衝突?
我得到的錯誤,像這樣的:
Uncaught TypeError: Cannot read property 'extend' of undefined
下劃線時尚未加載之前通常出現。
我的典型視圖是這樣的:(正常骨幹視圖)
var Backbone = require('backbone')
var _ = require('underscore')
var $ = require('jquery')
Backbone.$ = $
module.exports = Backbone.View.extend({
events: {
},
initialize: function() {
},
render: function() {
}
})
那麼我只需要調用它
./view1.js:
var View1 = require('view1')
var view1Instance = new View1(...)
感謝您的任何幫助:)
調查後編輯: 當通過運行調試器,看來Backbone
變量是一個空對象而不是Backbone。彷彿require('backbone')
剛剛返回{}
EDIT2: 這似乎與此問題:https://github.com/substack/node-browserify/issues/790
你能給我們提供關於錯誤的更多細節嗎?它是'Backbone.View.extend'失敗了嗎? – Ben 2014-09-23 17:38:54
@ben我提到的錯誤發生在'module.exports = Backbone.View.extend'(我也編輯了這個問題) – Amida 2014-09-23 18:04:37
當你有循環依賴關係時,通常會出現空對象。但是在要求Backbone時不應該發生這種情況。此外,noConflict應該不重要,因爲技術上捆綁中的所有內容都會從其他環境中關閉。 – 2014-09-23 18:07:21