我有chaplin/backbone项目,我要从requirejs转换为commonjs(带有浏览)。
当我尝试将应用程序加载到浏览器中时,我会得到Uncaught TypeError: Expecting a function in instanceof check, but got body
。这似乎是因为Backbone.$
不确定。
我已经在需要我的应用程序和/或任何chaplin文件之前进行以下操作:
var jQuery = require('jquery'),
Backbone = require('backbone');
Backbone.$ = jQuery;
所以这应该加载jQuery,如果我检查骨干。$在那里。但是,卓别林似乎要么将Backbone.$
重置为未定义,要么使用其他主链实例,尽管情况似乎并非如此。
问题是卓别林没有使用与您的骨干对象相同的骨干对象。确实,卓别林需要骨干1.0.0,并且您依靠更大的版本(大概是1.1.2)。
因此,当您require('backbone')
时,您需要1.1.2骨干对象,而当chaphlin在其上下文中调用require('backbone')
时,返回骨干1.0.0。
这是两个不同的对象,后来的对象将具有Backbone.$ === undefined
,无论您对第一个更改进行了什么。
一种解决方案是使用与caphlin相同的版本:更改软件包。json以使用骨干1.0.0,并使用npm install
。这只会在您的 node_modules 目录中安装骨干。然后,您将需要与Chaplin相同的对象。
另一个解决方案是强迫卓别林使用与您的版本相同的版本 - 但这可能会破坏其某些组件。只需删除 node_modules/chaplin/node_modules/backbone 目录。但是,同样,此修复程序确实很骇客,因为您不应该在 node_modules 目录下更改文件。