2016-07-29 88 views
0

我徒勞地遍佈谷歌如何加載木偶v3的pre.4 - 最新版本到現在(2016日) - 與RequireJS使用RequireJS加載Marionette(v3)的正確方法是什麼?

庫的捆綁版本似乎是RequireJS被打破,所以我必須手動包括「backbone.babysitter」和「backbone.radio」,這都需要這個版本的木偶的。

據:versioneye.com我需要:

  • backbone.babysitter1.0.0-pre.1
  • backbone.radio」 * 2.0.0-pre.1 *

所以我試着安裝與鮑爾米:

涼亭安裝backbone.babysitter

,它返回:

Unable to find a suitable version for backbone.babysitter, please choose one by typing one of the numbers below: 
    1) backbone.babysitter#^0.1.12 which resolved to 0.1.12 
    2) backbone.babysitter#1.0.0-pre.1 which resolved to 1.0.0-pre.1 and is required by marionette#3.0.0-pre.4 

Prefix the choice with ! to persist it to bower.json 

我選擇了第二屆一個這樣的:

? Answer !2

它返回:

bower resolution Saved backbone.babysitter#1.0.0-pre.1 as resolution 

我確實做到了與backbone.radio相同:

涼亭安裝backbone.radio

返回:

Unable to find a suitable version for backbone.radio, please choose one by typing one of the numbers below: 
    1) backbone.radio#^1.0.5 which resolved to 1.0.5 
    2) backbone.radio#2.0.0-pre.1 which resolved to 2.0.0-pre.1 and is required by marionette#3.0.0-pre.4 

Prefix the choice with ! to persist it to bower.json 

選擇:

?答案2

返回:

bower resolution Saved backbone.radio#2.0.0-pre.1 as resolution 

一切似乎是好的,但是當我檢查了版本爲每個這兩個庫的「bower.json」的文件,我發現:

主幹。保姆是:

"name": "backbone.babysitter", 
    "version": "0.1.11" 

backbone.radio

"name": "backbone.radio", 
    "version": "1.0.4" 

哪兒我去錯了嗎?

這是我bower.json

{ 
    "name": "Example App", 
    "authors": "Consta Gorgan", 
    "dependencies": { 
    "backbone": "~1.2.3", 
    "backbone.radio": "~2.0.0", 
    "backbone.babysitter": "~1.0.0", 
    "marionette": "~3.0.0", 
    "requirejs": "~2.1.15", 
    "requirejs-plugins": "~1.0.2" 
    }, 
    "resolutions": { 
    "backbone.radio": "2.0.0-pre.1", 
    "backbone.babysitter": "1.0.0-pre.1" 
    } 
} 

這是我的墊片文件:

requirejs.config({ 
    paths: { 
    jquery: '../bower_components/jquery/dist/jquery', 
    underscore: '../bower_components/underscore/underscore', 
    backbone: '../bower_components/backbone/backbone', 
    'backbone.radio': '../bower_components/backbone.radio/build/backbone.radio', 
    'backbone.babysitter': '../bower_components/backbone.babysitter/src/build/backbone.babysitter', 
    marionette: '../bower_components/marionette/lib/core/backbone.marionette' 
    }, 
    shim: { 
    jquery: { 
     exports: '$' 
    }, 
    backbone: { 
     deps: [ 
     'underscore', 
     'jquery' 
     ], 
     exports: 'Backbone' 
    }, 
    underscore: { 
     exports: '_' 
    }, 
    marionette: { 
     deps: [ 'jquery', 'underscore', 'backbone', 'backbone.radio', 'backbone.babysitter' ], 
     exports: 'Marionette' 
    } 
    } 
}) 

而且我這是怎麼加載具有RequireJS模塊在我app.js文件:

define([ 
    'jquery', 
    'underscore', 
    'backbone', 
    'marionette', 
    'router' 
], function ($, _, Backbone, Marionette, Router) { 
    'use strict' 

    var init = function() { 
    Router.init() 
    } 

    return { 
    init: init 
    } 
}) 

Aaand t他是我一直在瀏覽器中發現了錯誤:

Cannot set property 'VERSION' of undefined - *image*

這一個幾秒鐘後:

Load timeout for modules: backbone.radio - *image*

+0

你試過[Browserify](http://browserify.org/)嗎?會使它減少很多痛苦。 – Tholle

+1

Browserify是我的最愛,但由於某些管理原因,我必須使用RequireJS。謝謝你的提示! –

回答

2

代替../bower_components/backbone.babysitter/src/build/backbone.babysitter使用../bower_components/backbone.babysitter/lib/backbone.babysitter

1

如果有人運行進入這個,v3.0更改爲刪除保姆

requirejs.config({ 
    paths: { 
     jquery: 'node_modules/jquery/dist/jquery', 
     underscore: 'node_modules/underscore/underscore', 
     backbone: 'node_modules/backbone/backbone', 
     'backbone.radio': 'node_modules/backbone.radio/build/backbone.radio', 
     marionette: 'node_modules/marionette/lib/backbone.marionette' 
    }, 
    shim: { 
     jquery: { 
      exports: '$' 
     }, 
     backbone: { 
      deps: [ 
       'underscore', 
       'jquery' 
      ], 
      exports: 'Backbone' 
     }, 
     'backbone.radio': { 
      deps: [ 
       'underscore', 
       'backbone' 
      ], 
      export: 'Radio' 
     } 
     underscore: { 
      exports: '_' 
     }, 
     marionette: { 
      deps: [ 'jquery', 'underscore', 'backbone', 'backbone.radio' ], 
      exports: 'Marionette' 
     } 
    } 
}); 
+0

使用RequireJS的基本原則之一:'shim'僅適用於非AMD模塊(不調用'define'來註冊爲AMD模塊的代碼)。你在那裏的每一個墊片都是多餘的。 RequireJS爲AMD模塊設置的'shim'是* undefined *。它*可能*無效,或*可能*導致不良行爲。 – Louis

+0

夠公平的。我實際上並沒有使用RequireJS,但是正在使用OP示例。 –

相關問題