【发布时间】:2025-12-01 22:25:01
【问题描述】:
我有一个主干应用程序启动并正常运行。它旨在用作第三页中的小部件。不幸的是,我刚刚意识到其中一个页面已经加载了 Backbone / underscore。
我收到如下错误:
Uncaught TypeError: Cannot read property 'extend' of undefined
通常在之前未加载下划线时出现。
我的典型视图是这样的:(正常的 Backbone 视图)
./view1.js
var Backbone = require('backbone')
var _ = require('underscore')
var $ = require('jquery')
Backbone.$ = $
module.exports = Backbone.View.extend({
events: {
},
initialize: function () {
},
render: function () {
}
})
那我只需要调用它:
var View1 = require('view1')
var view1Instance = new View1(...)
感谢您的帮助:)
调查后编辑:
通过调试器运行时,Backbone 变量似乎是一个空对象,而不是 Backbone。好像require('backbone') 刚刚返回了{}
编辑2: 好像和这个问题有关:https://github.com/substack/node-browserify/issues/790
【问题讨论】:
-
你能给我们提供更多关于这个错误的细节吗?是
Backbone.View.extend失败了吗? -
@ben 我提到的错误发生在
module.exports = Backbone.View.extend(我也编辑了问题) -
当你有循环依赖时,通常会出现空对象。但是在需要 Backbone 时不应该发生这种情况。此外,noConflict 应该无关紧要,因为从技术上讲,捆绑包中的所有内容都与环境的其余部分隔离。
-
会不会和他们使用require.js有关?
标签: backbone.js requirejs underscore.js browserify