Skip to content

Commit

Permalink
fix: revert import config module as data (#13731)
Browse files Browse the repository at this point in the history
  • Loading branch information
patak-dev authored Jul 6, 2023
1 parent 3f4e36e commit b0bfa01
Showing 1 changed file with 10 additions and 15 deletions.
25 changes: 10 additions & 15 deletions packages/vite/src/node/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1150,23 +1150,18 @@ async function loadConfigFromBundledFile(
): Promise<UserConfigExport> {
// for esm, before we can register loaders without requiring users to run node
// with --experimental-loader themselves, we have to do a hack here:
// convert to base64, load it with native Node ESM.
// write it to disk, load it with native Node ESM, then delete the file.
if (isESM) {
const fileBase = `${fileName}.timestamp-${Date.now()}-${Math.random()
.toString(16)
.slice(2)}`
const fileNameTmp = `${fileBase}.mjs`
const fileUrl = `${pathToFileURL(fileBase)}.mjs`
await fsp.writeFile(fileNameTmp, bundledCode)
try {
// Postfix the bundled code with a timestamp to avoid Node's ESM loader cache
const configTimestamp = `${fileName}.timestamp:${Date.now()}-${Math.random()
.toString(16)
.slice(2)}`
return (
await dynamicImport(
'data:text/javascript;base64,' +
Buffer.from(`${bundledCode}\n//${configTimestamp}`).toString(
'base64',
),
)
).default
} catch (e) {
throw new Error(`${e.message} at ${fileName}`)
return (await dynamicImport(fileUrl)).default
} finally {
fs.unlink(fileNameTmp, () => {}) // Ignore errors
}
}
// for cjs, we can register a custom loader via `_require.extensions`
Expand Down

0 comments on commit b0bfa01

Please sign in to comment.