2014-09-14 9 views
2

요구를 통해 반응 및 반응 라우터를 내 앱에로드하려고합니다. shim setup을 따라야 만하지만, react-router가 적절한 React 객체를 얻지 못하는 오류가 발생합니다.반응 라우터에서이 RequireJS shim이 작동하지 않는 이유

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'를 사용하여'react-router'를 설치 했습니까? – Vikram

+0

@Vikram 예, 했어요. –

답변

10

반응 라우터는 window.React 또는 global.React가 설정된 경우에만 작동하는 소스에 나타납니다. 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 최적화 도구로 작업 할 수 없습니다. 번들로 묶어 놓으면 나에게 말쑥해진다. 브라우저 콘솔에'''잡히지 않은 오류 : 앱에 반응 라우터가 없다''라는 메시지가 나온다. – Spoeken

+0

@Spoeken 죄송합니다. 아직 프로젝트에 r.js 최적화를 추가하지 않았으므로 여기서 도울 수 없습니다. 해결책을 찾으면 답변을 게시하거나이 질문을 편집하십시오. –

+0

여기에 질문을 게시 : http://stackoverflow.com/questions/28172896/missing-react-router-after-bundling – Spoeken