2016-11-27 10 views
10

私は成功し、次のURLを解析することができましたUrlParser.parseHash機能の使用:予想通り、私は、ブラウザでこれをコピー&ペーストし、Enterキーを押したときの動作は、あるURLに#(ハッシュ)を付けずにElmでルーティング/ナビゲーションを行う方法は?

http://localhost:8000/MyRepl.elm/#home/something-else

を - 適切なビューを持つアプリのロード。

しかし今、私は#を削除したいと思います。これに対して私はUrlParser.parsePathの機能を使用しました。以前と同じようにコードの残りの部分を保存しましたが、何らかの理由でこれが機能しません。

私はこれを貼り付け、Enterキーを押しコピーします。

http://localhost:8000/MyRepl.elm/home/something-else - 何#に気付きません。

ブラウザは、elm -reactor localhostサーバーへの直接要求を作成します。

ルーティングは行われません。ニレリアクターサーバーが404を返す - #なし/MyRepl.elm/home/something-else

しかし、ルーティングという名前のファイルが存在しないかのように可能なはずhttp://package.elm-lang.org/packagesので - ドキュメントサイトはニレで書かれており、あなたが見ることができるように、URLには#はありません。

質問:

誰もが同じ問題を経験していますか?任意のアイデアをどのようにこれを修正するには?

#のないナビゲーションが期待通りに機能するレポを教えてください。

+0

と同じことを行うことができます私はELM-反応器がディープリンクをサポートしているかどうかを確認するためにあなたをお勧めします。 httpサーバがそれをサポートしていない場合、SPAがその仕事をする方法はありません。 – Tosh

+0

私の例を確認してくださいhttps://github.com/rofrol/elm-navigation-example – rofrol

答えて

6

リクエストごとにインデックスページをサーバーするバックエンドが必要です。インデックスページを提供した後、Elmではいつものようにルーティングが行われます。

router.get('/', function(req, res) { 
    res.sendFile(path.join(__dirname, 'public/index.html')); 
}); 

router.get('/*', function(req, res) { 
    res.sendFile(path.join(__dirname, 'public/index.html')); 
}); 

エルム反応器がこの機能をサポートしていませんように

急行で例えば、それは何かを見てしまいます。あなたはWebPACKのを使用している場合

あなたはhistoryApiFallback属性How to tell webpack dev server to serve index.html for any route

関連する問題