Backbone.js 获取主干.ChildViewContainer不是使用browserify&;的构造函数;es6
我正在尝试使用browserify和es6建立一个木偶项目。创建CollectionView时,我收到错误Backbone.js 获取主干.ChildViewContainer不是使用browserify&;的构造函数;es6,backbone.js,ecmascript-6,marionette,Backbone.js,Ecmascript 6,Marionette,我正在尝试使用browserify和es6建立一个木偶项目。创建CollectionView时,我收到错误uncaughttypeerror:Backbone.ChildViewContainer不是构造函数 我是不是漏装了什么东西?在互联网上找不到关于这个的任何信息 以下是我的收藏视图: import {ItemView, CollectionView} from 'backbone.marionette'; import navTemplate from '../templates/navi
uncaughttypeerror:Backbone.ChildViewContainer不是构造函数
我是不是漏装了什么东西?在互联网上找不到关于这个的任何信息
以下是我的收藏视图:
import {ItemView, CollectionView} from 'backbone.marionette';
import navTemplate from '../templates/navigation.hbs';
import navItemTemplate from '../templates/_navItem.hbs';
var NavigationItem = ItemView.extend({
template: navItemTemplate
});
var NavigationView = CollectionView.extend({
template: navTemplate,
childView: NavigationItem,
childViewContainer: '.left-navigation',
});
export default NavigationView;
我的布局就是这样创造的
import {LayoutView} from 'backbone.marionette';
import layoutTemplate from './templates/layout.hbs';
import NavigationView from './Views/navigation';
export default class AppLayout extends LayoutView {
constructor(options) {
super(options);
this.template = layoutTemplate;
}
regions() {
return {
'navigation': '.left-aside'
};
}
onRender() {
console.log(this.getRegion('navigation'));
this.getRegion('navigation').show(new NavigationView());
}
}
我还使用了一个垫片来使用backbone.radio,但这不会影响:
(function(root, factory) {
if (typeof define === 'function' && define.amd) {
define(['backbone.marionette', 'backbone.radio', 'underscore'], factory);
} else if (typeof exports !== 'undefined') {
module.exports = factory(require('backbone.marionette'), require('backbone.radio'), require('underscore'));
} else {
factory(root.Backbone.Marionette, root.Backbone.Radio, root._);
}
}(this, function(Marionette, Radio, _) {
'use strict';
Marionette.Application.prototype._initChannel = function () {
this.channelName = _.result(this, 'channelName') || 'global';
this.channel = _.result(this, 'channel') || Radio.channel(this.channelName);
};
}));
编辑:我发现我编译的文件有很多主干的副本,所以这可能是问题所在…今天早上使用一个旧的JSPM配置文件指向木偶2.4.1和主干1.2.1时出现了同样的错误,Google将我链接到了这里。。。更新到最近的木偶2.4.5和主干1.3.2版本似乎可以解决我的问题。您正在运行什么版本?我在Webpack中遇到了这个问题。我可以通过在webpack.config.js中指定别名来解决这个问题
resolve: {
extensions: ['', '.js', '.ts'],
alias: {
'backbone': 'backbone.marionette/node_modules/backbone'
}
},
i、 e.确保对主干网的所有引用使用作为木偶网依赖项安装的主干网
我从未使用过Browserify,但也许您可以通过安装并将其添加到您的package.json中来执行类似操作:
{
"aliasify": {
"aliases": {
"backbone": "backbone.marionette/node_modules/backbone"
}
}
我也有同样的问题,但是使用了TypeScript和Webpack-在我更新我的npm包之前,这一切都很好。据我所知,我使用的是木偶2.4.5和主干1.3.3^这也是我的版本。我想这是因为在我编译的文件中有多个主干定义,但只有一个主干。保姆你知道为什么会有多个主干定义吗?很乐意帮助。这是webpack还是browserify?这是webpack。谢谢你,它也解决了木偶认可者的问题。