diff --git a/packages/vite/src/node/config.ts b/packages/vite/src/node/config.ts index fbc5754af892cd..1e7b9583a618ea 100644 --- a/packages/vite/src/node/config.ts +++ b/packages/vite/src/node/config.ts @@ -887,9 +887,12 @@ export async function loadConfigFromFile( // bundle the config file w/ ts transforms first, write it to disk, // load it with native Node ESM, then delete the file. fs.writeFileSync(resolvedPath + '.mjs', bundled.code) - userConfig = (await dynamicImport(`${fileUrl}.mjs?t=${Date.now()}`)) - .default - fs.unlinkSync(resolvedPath + '.mjs') + try { + userConfig = (await dynamicImport(`${fileUrl}.mjs?t=${Date.now()}`)) + .default + } finally { + fs.unlinkSync(resolvedPath + '.mjs') + } debug(`TS + native esm config loaded in ${getTime()}`, fileUrl) } else { // using Function to avoid this from being compiled away by TS/Rollup