2016-06-20 1 views
1

간단한보기 및 구성 요소 작성 방법을 사용하여 React 앱을 작성하려고합니다. 내 웹팩 dev에 서버를 실행하면 나는 다음과 같은 오류 출력을 얻을 :Webpack에서 모듈 구문 분석에 실패했으며 예기치 않은 토큰

Module parse failed: /Directory/To/router.js Unexpected token (26:2)

You may need an appropriate loader to handle this file type.

그것에 대해 불평 처음 공유기 핸들러를 정의 할 때입니다 라인을 ... <Route handler={App}>

내 전체 router.js는 다음과 같이 설정됩니다.

// Load css first thing. It gets injected in the <head> in a <style> element by 
// the Webpack style-loader. 
import css from './src/styles/main.sass'; 

import React from 'react'; 
import { render } from 'react-dom'; 

// Assign React to Window so the Chrome React Dev Tools will work. 
window.React = React; 

import { Router } from 'react-router'; 
Route = Router.Route; 

// Require route components. 

import { App } from './containers/App'; 
import { Home } from './containers/Home'; 
import { StyleGuide } from './containers/StyleGuide'; 
import { Uploader } from './containers/Uploader'; 

const routes = (
    <Route handler={App}> 
    <Route name="Home" handler={Home} path="/" /> 
    <Route name="StyleGuide" handler={StyleGuide} path="/styleguide" /> 
    <Route name="Uploader" handler={Uploader} path="/uploader" /> 
    </Route> 
) 

Router.run(routes, function(Handler) { 
    return ReactDOM.render(<Handler/>, document.getElementById('app')); 
    }); 

.babelrc 파일이 내가 가진 내 사전 설정 reactes2015

내 개발 웹팩 정의는 다음과 같습니다

var path = require('path'); 
var webpack = require('webpack'); 

module.exports = { 
    entry: [ 
    'webpack-dev-server/client?http://0.0.0.0:8080', 
    'webpack/hot/only-dev-server', 
    './src/router' 
    ], 
    devtool: 'eval', 
    debug: true, 
    output: { 
    path: path.join(__dirname, 'public'), 
    filename: 'bundle.js' 
    }, 
    resolveLoader: { 
    modulesDirectories: ['node_modules'] 
    }, 
    plugins: [ 
    new webpack.HotModuleReplacementPlugin(), 
    new webpack.NoErrorsPlugin() 

    ], 
    resolve: { 
    extensions: ['', '.js'] 
    }, 
    module: { 
    loaders: [ 
    // js 
    { 
     test: /\.js$/, 
     loaders: ['babel'], 
     include: path.join(__dirname, 'public') 
    }, 
    // CSS 
    { 
     test: /\.sass$/, 
     include: path.join(__dirname, 'public'), 
     loader: 'style-loader!css-loader!sass-loader' 
    } 
    ] 
    } 
}; 

이미이 문제를 연구하기 위해 시도했습니다. 이 특정 인스턴스에 대한 솔루션을 찾지 못했습니다. 나는 이것이 왜 이런 행동을하는지 궁금해.

편집 한 내가 public/ 내 실제 소스 디렉토리에 디렉토리 이름을 변경하고하지 않음으로써 내 문제를 해결하기 위해 관리

. 하지만 내 실수를 바로 잡은 후에 구성 요소를 다루는 다른 두 가지 오류가 발생했을 가능성이 높습니다.

는 이제 브라우저에서 두 가지 오류가 나타날 수 Warning: React.createElement: type should not be null, undefined, boolean, or number. It should be a string (for DOM elements) or a ReactClass (for composite components).

TypeError: _reactRouter.Router.run is not a function. (In '_reactRouter.Router.run', '_reactRouter.Router.run' is undefined)

나는이 일반적으로 정확하게 몇 가지 내보내기/가져 오기를하지 않음으로써 발생하는 것으로 나타났습니다. 당신은 기본적으로 업 로더를 수출하지만 명명 된 수출로 가져

import React from 'react'; 
import { Link } from 'react-router'; 

const Uploader = React.createClass({ 
    //displayName: 'Uploader', 
    render() { 
     return (
     <div> 
      <h1>Uploader</h1> 
     </div> 
    ) 
    } 
}); 

export default Uploader; 
+0

'router.js' 파일이'public /'디렉토리에 있습니까? 대중은 또한 당신의 출력물 인 것처럼 보입니다. – Herku

+0

@Herku 예이 질문을 게시 한 직후 나는 이것을 알아 냈습니다! 하지만 그것은 이상한 오류를주고 있기 때문에 디렉토리를 변경 한 후 내 질문을 업데이 트했습니다. – privateer35

답변

0

을 : 그것은 다음과 같이 자신의 구조를 공유 내 router.js 또는 내 구성 요소에서 하나오고

export default Uploader; 

import { Uploader } from './containers/Uploader'; 
// instead do 
import Uploader from './containers/Uploader'; 

라우터 구성은 비트가 이상한. react-router의 버전을 사용하고 계십니까? 보통 <Route> 설정을 <Router>으로 감쌀 수 있습니다. docs을 참조하십시오.

+0

2.4.0 버전을 사용하고 있으며 이에 동의합니다. 조금만 둘러 보았을 때 나는 다른 사람들이 내가하는 것과는 다른 방식으로 그것을 구현하는 것을 본다. – privateer35

관련 문제