2014-09-14 3 views
2

Я пытаюсь получить реакцию и загрузку реактивного маршрутизатора в мое приложение через require. Я должен выполнить настройку прокладки, но я все равно получаю сообщение об ошибке, когда у реактора-маршрутизатора нет соответствующего объекта React.Почему этот регулятор RequireJS не работает для реактивного маршрутизатора

paths: { 
    domReady:  '../lib/requirejs-domready/domReady', 
    react:   '../lib/react/react', 
    'react-router': '../lib/react-router/dist/react-router' 
    }, 
    shim: { 
    'react':  { 
     exports: 'React' 
    }, 
    'react-router': { 
     deps: ['react'], 
     exports: 'ReactRouter' 
    } 
    } 

    require(['domReady!', 'react', 'react-router'], ... 


Uncaught TypeError: Cannot read property 'createClass' of undefined react-router.js:372 
../utils/withoutProperties react-router.js:1 
s react-router.js:1 
(anonymous function) react-router.js:62 
./Route react-router.js:1 
s react-router.js:1 
(anonymous function) react-router.js:886 
./actions/LocationActions react-router.js:1 
s react-router.js:1 
e react-router.js:1 
(anonymous function) require.js:1658 
context.execCb require.js:874 
Module.check require.js:1151 
Module.enable require.js:782 
Module.init require.js:1178 
callGetModule require.js:1552 
context.completeLoad require.js:1679 
context.onScriptLoad 

Все установлено через Bower. Реагент равен 0,11.1, маршрутизатор равен 0.7.0

+0

Вы использовали 'bower' для установки' response-router'? – Vikram

+0

@Vikram да, я. –

ответ

10

В источнике появляется, что реакция-маршрутизатор будет работать только в том случае, если установлено окно. React или global.React. Само реагирование не будет вызывать глобальный объект в среде RequireJS. Поэтому я закончил писать прокладку.

paths: { 
    domReady:  '../lib/requirejs-domready/domReady', 
    react:   '../lib/react/react', 
    'react-router': '../lib/react-router/dist/react-router', 
    'react-router-shim': 'react-router-shim' 
}, 
shim: { 
    'react-router-shim': { 
    exports: 'React' 
    }, 
    'react-router': { 
    deps: ['react-router-shim'], 
    exports: 'ReactRouter' 
    } 
} 

реагируют-маршрутизатор-прокладка:

define(['react'], function(React) { 
    "use strict"; 

    window.React = React; 
}); 

можно затем использовать реагировать и реагировать-маршрутизатор в качестве собственных зависимостей.

+0

Я сделал это. Но не может заставить оптимизатор requirejs работать с ним. Когда все это связано с этим, я бросаю меня: '' Uncaught Error: app missing react-router''' в консоли браузера. – Spoeken

+0

@Spoeken К сожалению, я еще не добавил оптимизацию r.js для проекта, поэтому я не могу помочь там. Если вы найдете решение, отправьте ответ или отредактируйте его. –

+0

Нашли вопрос здесь: http://stackoverflow.com/questions/28172896/missing-react-router-after-bundling – Spoeken