2016-04-27 8 views
1

私は、browserifyとes6を使用して、マリネットプロジェクトを設定しようとしています。 CollectionViewを作成するとき、私はエラーUncaught TypeError: Backbone.ChildViewContainer is not a constructorを得ています。Backboneを取得する.ChildViewContainerは、browserify&es6を使用するコンストラクタではありません。

何かがロードされていませんか?これについてインターネット上で何も見つけられないようです。ここで

は私のコレクションビューです:

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); 
    }; 
})); 

編集:私のコンパイルされたファイルには多くのバックボーンのコピーが含まれているため、問題の可能性があります。

答えて

0

Marionette 2.4.1とBackbone 1.2.1を指している古いJSPM設定ファイルを使用しているときに、この同じエラーが発生しました。Googleがここにリンクしています...もっと最近のMarionette 2.4.5とBackbone 1.3へのアップデート.2リリースは私のためにものを修正するように見えました。実行しているバージョンは何ですか?

+0

私は同じ問題を有するが、活字体とのWebPACKを使用しています - それは私はnpmパッケージを更新するまでうまくいった。私が見る限り、私はMarionette 2.4.5とBackbone 1.3.3 – user888734

+0

^を使用しています。これらは私が持っているバージョンです。私はそれが私のコンパイルされたファイルに複数のバックボーン定義を持っているためだと思うが、バックボーンは1つしかない。ベビーシッター –

+0

複数のバックボーン定義がある理由を知っていますか? – user888734

1

Webpackでこの問題が発生しました。私は、バックボーンへのすべての参照は、マリオネットの依存関係としてインストールいずれかを使用することを確認すること、すなわち

resolve: { 
    extensions: ['', '.js', '.ts'], 
    alias: { 
     'backbone': 'backbone.marionette/node_modules/backbone' 
    } 
}, 

webpack.config.jsに別名を指定することによって、それを回避することができました。

私はBrowserifyを使用したことがありませんが、おそらくあなたはaliasifyをインストールし、あなたのpackage.jsonにこれを追加することによって、似たような操作を行うことができます。

{ 
"aliasify": { 
    "aliases": { 
     "backbone": "backbone.marionette/node_modules/backbone" 
    } 
} 
+0

うわー、ありがとう。そこに私の頭痛のビットを保存! –

+0

お寄せいただきありがとうございます。これはwebpackやbrowserifyでですか? – user888734

+0

Webpackと一緒にいた。 –

関連する問題