Description
Reproduction
I simply followed the instructions at https://reactrouter.com/start/framework/installation
npx create-react-router@latest my-react-router-app
cd my-react-router-app
npm i
npm run dev
and http://localhost:5173 just works.
Installing and adding @vitejs/plugin-basic-ssl
to vite.config.js
like
import { reactRouter } from "@react-router/dev/vite";
import autoprefixer from "autoprefixer";
import tailwindcss from "tailwindcss";
import { defineConfig } from "vite";
import tsconfigPaths from "vite-tsconfig-paths";
import basicSsl from "@vitejs/plugin-basic-ssl";
export default defineConfig({
css: {
postcss: {
plugins: [tailwindcss, autoprefixer],
},
},
plugins: [reactRouter(), tsconfigPaths(), basicSsl()],
});
results in a server error when trying to open https://localhost:5173/:
npm run dev
> dev
> react-router dev
Re-optimizing dependencies because lockfile has changed
➜ Local: https://localhost:5173/
➜ Network: use --host to expose
➜ press h + enter to show help
12:36:13 PM [vite] Internal server error: Headers.set: ":method" is an invalid header name.
at Object.webidl.errors.exception (node:internal/deps/undici/undici:3564:14)
at Object.webidl.errors.invalidArgument (node:internal/deps/undici/undici:3575:28)
at _Headers.set (node:internal/deps/undici/undici:8814:31)
at fromNodeHeaders (/Users/iwanuschka/projects/react-router-test/my-react-router-app/node_modules/@react-router/dev/dist/vite.js:803:17)
at fromNodeRequest (/Users/iwanuschka/projects/react-router-test/my-react-router-app/node_modules/@react-router/dev/dist/vite.js:819:14)
at nodeHandler (/Users/iwanuschka/projects/react-router-test/my-react-router-app/node_modules/@react-router/dev/dist/vite.js:1968:30)
at /Users/iwanuschka/projects/react-router-test/my-react-router-app/node_modules/@react-router/dev/dist/vite.js:1975:23
I checked if the error occurs without React Router by following the instructions at https://vite.dev/guide/#scaffolding-your-first-vite-project
npm create vite@latest
npm create vite@latest my-react-app -- --template react
and installing and adding @vitejs/plugin-basic-ssl
to vite.config.js
like
import { defineConfig } from "vite";
import react from "@vitejs/plugin-react";
import basicSsl from "@vitejs/plugin-basic-ssl";
// https://vite.dev/config/
export default defineConfig({
plugins: [react(), basicSsl()],
});
. Result: https://localhost:5173/ does work.
The error does not occur after adding server.proxy = {}
to vite.config.js
:
import { reactRouter } from "@react-router/dev/vite";
import autoprefixer from "autoprefixer";
import tailwindcss from "tailwindcss";
import { defineConfig } from "vite";
import tsconfigPaths from "vite-tsconfig-paths";
import basicSsl from "@vitejs/plugin-basic-ssl";
export default defineConfig({
css: {
postcss: {
plugins: [tailwindcss, autoprefixer],
},
},
server: {
proxy: {},
},
plugins: [reactRouter(), tsconfigPaths(), basicSsl()],
});
According to vitejs/vite#4184 this leads to the usage of HTTP/1.1
.
Probably related:
- Not work with Node.js v21 when using https in dev server vitejs/vite#15495 (comment)
- HTTP2 Pseudo headers get rejected by Remix [\w Vite] remix#7867
System Info
System:
OS: macOS 15.1.1
CPU: (10) arm64 Apple M1 Max
Memory: 1.07 GB / 64.00 GB
Shell: 5.9 - /bin/zsh
Binaries:
Node: 20.18.1 - ~/.nvm/versions/node/v20.18.1/bin/node
npm: 10.8.2 - ~/.nvm/versions/node/v20.18.1/bin/npm
pnpm: 9.0.6 - ~/Library/pnpm/pnpm
Browsers:
Brave Browser: 131.1.73.97
Chrome: 131.0.6778.140
Firefox Nightly: 126.0a1
Safari: 18.1.1
npmPackages:
@react-router/dev: ^7.0.2 => 7.0.2
@react-router/node: ^7.0.2 => 7.0.2
@react-router/serve: ^7.0.2 => 7.0.2
react-router: ^7.0.2 => 7.0.2
vite: ^5.4.11 => 5.4.11
Used Package Manager
npm
Expected Behavior
Dev server running on HTTPS should work.
Actual Behavior
Dev server running on HTTPS doesn't work.