-
Notifications
You must be signed in to change notification settings - Fork 785
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix: improve the rendering of build errors when bundling #6894
Conversation
🦋 Changeset detectedLatest commit: 1c9a9af The changes in this PR will be included in the next version bump. This PR includes changesets to release 2 packages
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
bfffe11
to
28a4596
Compare
A wrangler prerelease is available for testing. You can install this latest build in your project with: npm install --save-dev https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/11276448153/npm-package-wrangler-6894 You can reference the automatically updated head of this PR with: npm install --save-dev https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/prs/6894/npm-package-wrangler-6894 Or you can use npx https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/11276448153/npm-package-wrangler-6894 dev path/to/script.js Additional artifacts:npx https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/11276448153/npm-package-create-cloudflare-6894 --no-auto-update npm install https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/11276448153/npm-package-cloudflare-kv-asset-handler-6894 npm install https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/11276448153/npm-package-miniflare-6894 npm install https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/11276448153/npm-package-cloudflare-pages-shared-6894 npm install https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/11276448153/npm-package-cloudflare-vitest-pool-workers-6894 npm install https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/11276448153/npm-package-cloudflare-workers-editor-shared-6894 npm install https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/11276448153/npm-package-cloudflare-workers-shared-6894 Note that these links will no longer work once the GitHub Actions artifact expires.
Please ensure constraints are pinned, and |
.formatMessagesSync(e?.errors ?? [], { kind: "error" }) | ||
.join() | ||
.trim() | ||
).split("This error came from the")[0] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No need for this "test hack" any more.
@@ -467,7 +467,11 @@ export async function bundleWorker( | |||
await ctx.watch(); | |||
result = await initialBuildResultPromise; | |||
if (result.errors.length > 0) { | |||
throw new UserError("Failed to build"); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We were just swallowing the errors and warnings here and relying upon them being logged "directly" to stdout by another instance of esbuild that is doing the format sniffing. See below.
@@ -7,7 +7,7 @@ export function esbuildAliasExternalPlugin( | |||
aliases: Record<string, string> | |||
): Plugin { | |||
return { | |||
name: "external alias imports plugin", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
When writing to the logs esbuild already prefixes these names with plugin:
so I removed all the " plugin"
postfixes and made them all bit more consistent.
@@ -23,14 +23,19 @@ export const cloudflareInternalPlugin: Plugin = { | |||
.map((p) => `"${p}"`) | |||
.sort() | |||
); | |||
throw new Error( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It turns out that throwing an error causes esbuild to think that something bad went wrong in the plugin and dumps the whole stack trace to the plugin out.
Returning an object containing errors
for user errors is cleaner.
pnpm-lock.yaml
Outdated
'@vitest/runner': | ||
specifier: ~2.1.1 | ||
version: 2.1.1 | ||
'@vitest/snapshot': | ||
specifier: ~2.1.1 | ||
version: 2.1.1 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LOL! We should fix this...
🙌 |
28a4596
to
1c9a9af
Compare
What this PR solves / how to test
Fixes #0000
Author has addressed the following