From 7f575d342950879f26ddc32c98162057a36e42b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Barth=C3=A9l=C3=A9my=20Ledoux?= Date: Fri, 6 Aug 2021 15:46:00 -0500 Subject: [PATCH 1/2] fix: prevent vite from crashing where there are no support files or specs found (#17624) * fix: no supportfile + no specs, vite don't crash When there is no values, in the optimization array, supportFile can be a boolean. the final optimized entry passed to fast-glog is then `[false]` whic crashes cypress. This protects against the no-spec issue closes #17373 * fix: protect startServer from undefined specs --- npm/vite-dev-server/src/startServer.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/npm/vite-dev-server/src/startServer.ts b/npm/vite-dev-server/src/startServer.ts index c2b1758de31e..04561241f3c1 100644 --- a/npm/vite-dev-server/src/startServer.ts +++ b/npm/vite-dev-server/src/startServer.ts @@ -59,7 +59,9 @@ const resolveServerConfig = async ({ viteConfig, options }: StartDevServerOption // Ask vite to pre-optimize all dependencies of the specs finalConfig.optimizeDeps = finalConfig.optimizeDeps || {} - finalConfig.optimizeDeps.entries = [...options.specs.map((spec) => spec.relative), supportFile] + if ((options.specs && options.specs.length) || supportFile) { + finalConfig.optimizeDeps.entries = [...options.specs.map((spec) => spec.relative), supportFile] + } debug(`the resolved server config is ${JSON.stringify(finalConfig, null, 2)}`) From cdb2a5232eeba6383400979feacf2f9d8c4ab405 Mon Sep 17 00:00:00 2001 From: ElevateBart Date: Mon, 9 Aug 2021 13:39:00 -0500 Subject: [PATCH 2/2] fix: when there are specs but the supportFile is undefined --- npm/vite-dev-server/src/startServer.ts | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/npm/vite-dev-server/src/startServer.ts b/npm/vite-dev-server/src/startServer.ts index 04561241f3c1..b643cd482237 100644 --- a/npm/vite-dev-server/src/startServer.ts +++ b/npm/vite-dev-server/src/startServer.ts @@ -59,8 +59,13 @@ const resolveServerConfig = async ({ viteConfig, options }: StartDevServerOption // Ask vite to pre-optimize all dependencies of the specs finalConfig.optimizeDeps = finalConfig.optimizeDeps || {} - if ((options.specs && options.specs.length) || supportFile) { - finalConfig.optimizeDeps.entries = [...options.specs.map((spec) => spec.relative), supportFile] + // pre-optimizea all the specs + if ((options.specs && options.specs.length)) { + finalConfig.optimizeDeps.entries = [...options.specs.map((spec) => spec.relative)] + // only optimize a supportFile is it is not false or undefined + if (supportFile) { + finalConfig.optimizeDeps.entries.push(supportFile) + } } debug(`the resolved server config is ${JSON.stringify(finalConfig, null, 2)}`)