Spring Boot + npm + Geb で入力フォームを作ってテストする ( その92 )( http-proxy-middleware の createProxyMiddleware 関数の引数 context には Proxy させない URI を後に書く )
概要
記事一覧はこちらです。
- 今回の手順で確認できるのは以下の内容です。
Spring Boot + npm + Geb で入力フォームを作ってテストする ( その85 )( Node.js を 10.15.3 → 12.16.3 へ、npm を 6.9.0 → 6.14.5 へバージョンアップする ) で http-proxy-middleware を 0.19.1 → 1.0.3 にバージョンアップして createProxyMiddleware 関数を使うように変更したのですが、createProxyMiddleware 関数の引数 context に記述する URI の順番が今のままではダメなことに今更ながら気づきました。
Proxy させる URI を先に書いて Proxy させない URI をその後に書かないと、Proxy させないはずの URI も Proxy されていました。
期待した動作になるよう修正します。
参照したサイト・書籍
目次
- 今の記述だと Proxy させない URI も Proxy されてしまう
- createProxyMiddleware 関数の引数 context に Proxy させない URI を後に記述するよう修正する
手順
今の記述だと Proxy させない URI も Proxy されてしまう
bs-springboot-config.js の createProxyMiddleware 関数の記述は現在以下のように Proxy させない URI を先に、Proxy させる URI を後に記述していますが、
const {createProxyMiddleware} = require("http-proxy-middleware"); const proxy = createProxyMiddleware( [ // /css, /js, /vendor と *.html は Tomcat に転送しない "!/css/**/*", "!/js/**/*", "!/vendor/**/*", "!/**/*.html", "/**/*" ], {target: "http://localhost:8080"} ); ..........
npm run browser-sync:springboot
コマンドを実行して Browsersync だけ起動した後(Tomcat は起動しません)、
http://localhost:9080/css/common.css にアクセスすると "!/css/**/*"
の設定により Proxy されず /css/common.css が取得できると思っていましたが、Error occured while trying to proxy to: localhost:9080/css/common.css
のエラーメッセージが表示されます。
Browsersync から Tomcat に Proxy しようとして Tomcat にアクセスできないのでエラーになっているようです。
createProxyMiddleware 関数の引数 context に Proxy させない URI を後に記述するよう修正する
この問題は "/**/*"
の記述を一番最初にすることで解決できました。
bs-springboot-config.js を以下のように修正し、
const {createProxyMiddleware} = require("http-proxy-middleware"); const proxy = createProxyMiddleware( [ // /css, /js, /vendor と *.html は Tomcat に転送しない "/**/*", "!/css/**/*", "!/js/**/*", "!/vendor/**/*", "!/**/*.html" ], {target: "http://localhost:8080"} );
Browsersync を再起動してから http://localhost:9080/css/common.css にアクセスすると、今度は /css/common.css の内容が返ってきました。
Tomcat を起動して http://localhost:8080/inquiry/input/01 にアクセスすると入力画面1も表示されたので、問題ないようです。
履歴
2020/06/21
初版発行。