2016-07-20 7 views
0

とルートにURLパラメータへのアクセス、私は次のコードを持っています:ファイル名。私は自分のコードを何度もチェックしていますが、何が間違っているかはわかりません。何かご意見は?ノードとExpress.jsのWebアプリケーションのための私のルートディレクトリにExpress.js

+2

'htmlExt'関数はどのように見えますか?他のルート/ミドルウェアが定義されていますか?私が正しいと思われるものが表示されているので、問題がコードに表示されていないと思われます... – Will

+0

あなたが正しいです、htmlExt関数がエラーを引き起こしていました。私はそれを 'router.get( 'index /:filename')'に切り替えました。 –

+0

私はまだ、あなたが見ていたものを引き起こすような、 'htmlExt'のようなものに興味があります。私たちは正確に何が起こったかを共有することができるように投稿していますか? – Will

答えて

1

[OK]を、ここで私は信じて何が起こった:

  1. スタートを/index/:fileName
  2. htmlExtでは/index/:fileName|index/:fileName.html
  3. Expressルータが消費に示すために、何のグループ化がないので、これは正規表現/^\/index\/([^\/]+?)|index\/([^\/]+?)\.html(?:\/(?=$))?$/i
  4. を作成することになりましたパイプが適用されたパターンに一致するように動作しました。 "/^\/index\/([^\/]+?)/iまたは/index\/([^\/]+?)\.html(?:\/(?=$))?$/i"
  5. パイプの前のパターンが式を満たしました。それは怠惰な試合で終了し、(?:\/(?=$))?$はもはや必要ではなかったので、その試合グループの最初のキャラクターと一致するだけで満足しました。

私はExpress Route Testerを使って、生成正規表現がどのように見えるかを知りました。 (注:このツールはExpress Routerのパターンマッチング部分を実際にサポートしていないので、次のステップでちょっとしたファジィを行う必要がありました(パイプの前からエスケープを外しました))。

次に、https://regex101.com/r/kN5kW9/1を使用して、何が起こっていたのかを把握しました。

+0

この分析に感謝します。私は適切にテスト/私の正規表現の将来を理解することを確認します! –

関連する問題