fix: Improve error messages when importing and building entrypoints

This commit is contained in:
Aaron Klinker
2024-01-27 00:20:48 -06:00
parent d32e59e38f
commit 3b63a51475
2 changed files with 11 additions and 8 deletions
+9 -6
View File
@@ -18,12 +18,15 @@ export async function buildEntrypoints(
const steps: BuildStepOutput[] = [];
for (let i = 0; i < groups.length; i++) {
const group = groups[i];
const groupNames = [group]
.flat()
.map((e) => e.name)
.join(pc.dim(', '));
spinner.text = pc.dim(`[${i + 1}/${groups.length}]`) + ` ${groupNames}`;
steps.push(await config.builder.build(group));
const groupNames = [group].flat().map((e) => e.name);
const groupNameColored = groupNames.join(pc.dim(', '));
spinner.text =
pc.dim(`[${i + 1}/${groups.length}]`) + ` ${groupNameColored}`;
try {
steps.push(await config.builder.build(group));
} catch (err) {
throw Error(`Failed to build ${groupNames.join(', ')}`, { cause: err });
}
}
const publicAssets = await copyPublicDirectory(config);
+2 -2
View File
@@ -89,16 +89,16 @@ export async function importEntrypointFile<T>(
const res = await jiti(path);
return res.default;
} catch (err) {
const filePath = relative(config.root, path);
if (err instanceof ReferenceError) {
// "XXX is not defined" - usually due to WXT removing imports
const variableName = err.message.replace(' is not defined', '');
const filePath = relative(config.root, path);
throw Error(
`${filePath}: Cannot use imported variable "${variableName}" outside the main function. See https://wxt.dev/guide/entrypoints.html#side-effects`,
{ cause: err },
);
} else {
throw err;
throw Error(`Failed to load entrypoint: ${filePath}`, { cause: err });
}
}
}