卓别林在骨干上找不到jQuery



我有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 目录下更改文件。

相关内容

  • 没有找到相关文章

最新更新