You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
buildStart is not an async hook, and invoking await will immediately continue the build pipeline, which will have unexpected consequences.
Vitest:
-- webpack call
-- webpack end
-- buildStart call ← buildStart waits 1 second to resolve a promise
-- transform call ← transform called before buildStart is fulfilled
× transform thrown Error: transform method was called either before buildStart call was completed or after it has thrown an error
-- transform end
√ buildStart return ← timer fires, buildStart fulfills
-- buildStart end
(Test timeout)
Node.js:
-- webpack call
-- webpack end
-- buildStart call
-- transform call
transform call without without buildStart completion, throwing!
× transform thrown Error: transform method was called either before buildStart call was completed or after it has thrown an error
-- transform end
UNHANDLED EXPECTION
Error: transform method was called either before buildStart call was completed or after it has thrown an error
(Process halted with error code)
Additional context
In Rollup/Vite realm buildStart is async and can be used to perform initial initialisation for transform hook invocations.
transform hook seems to be correctly async, which means you can await for buildStart fulfillment in it, which involves moving async logic of buildStart to a separate function and then also creating another plugin variable in which you will store promise returned by that separate async function call. But it's not obvious and still feels like a mistake/oversight.
Logs
N/A.
The text was updated successfully, but these errors were encountered:
Environment
unplugin 1.3.1
webpack 5.76.2
Node.js v16.14.2
Reproduction
buildStart
perform async operation.transform
hook rely on ordered completionbuildStart
and its result.StackBlitz: https://stackblitz.com/edit/webpack-webpack-js-org-1qvdhq?file=package.json&view=editor (
pnpm start
to run webpack programmatically,pnpm test
to run tests which will also do the build programatically).Describe the bug
buildStart
is not an async hook, and invokingawait
will immediately continue the build pipeline, which will have unexpected consequences.Vitest:
Node.js:
Additional context
buildStart
is async and can be used to perform initial initialisation fortransform
hook invocations.transform
hook seems to be correctly async, which means you can await forbuildStart
fulfillment in it, which involves moving async logic ofbuildStart
to a separate function and then also creating another plugin variable in which you will store promise returned by that separate async function call. But it's not obvious and still feels like a mistake/oversight.Logs
The text was updated successfully, but these errors were encountered: