2017-03-10 6 views
0

reactact.js(preactを使用)が新しく、非同期ルーティング(preact-async-router)に問題があります。preact非同期ルータがチャンクを見つけられない

マイmain.js:

import { h, render } from 'preact'; 
import {Router, Route} from 'preact-router'; 
import AsyncRoute from 'preact-async-route'; 
import Home from './components/home.jsx'; 

/** @jsx h */ 

function getHelloWorld(){ 
    return System.import('./components/hello.jsx').then(module => module.default); 
} 

render(
    <Router> 
     <Route path="/" component={Home} /> 
     <AsyncRoute path="/hello/:foo" component={getHelloWorld} 
     loading={()=>{alert("loading...");}} /> 
    </Router> 
, document.getElementById("app") 
); 

マイhome.jsx:

import {h, Component} from 'preact'; 
import {Link} from 'preact-router'; 

/** @jsx h */ 

export default class Home extends Component { 
    render() { 
     return <h1> 
      This is home page<br/> 
      <Link href='/hello/Earth'>Earth</Link> 
     </h1>; 
    } 
} 

マイhello.jsx:

import {h, render, Component} from 'preact'; 

/** @jsx h */ 

export default class Hello extends Component { 
    render() { 
     return <h1>Hello {this.props.matches.foo}!</h1> 
    } 
} 

のWebPACKはbundle.jsと1を作成します。 bundle.js(hello.jsx用)!

私のリソースのすべて - dir(resource-dirはexpress.staticで利用可能です)。

home.jsxがロードされ、リンクが(localhost/hello/Earth)を指しています。

問題は、1.bundle.jsがロードされていないことです。 ブラウザ(bundle.js)が "/hello/1.bundle.js"の下でファイルを要求していて、 "/resources/1.bundle.js"の下には要求していません!

どうすれば修正できますか?

編集:

これで動作します。私のwebpack設定に "/ resources /"と "publicPath"を追加しました。ありがとうございました!

答えて

1

@Kian - webpack設定でoutput.publicPathを "/"に設定する必要があるようです。

1

Jasonによると、このパブリックパスが出力にあることを確認してください。publicPathは、これらのチャンクをどこから選ぶ必要があるかを指示します。

webpack config

関連する問題