Fix Markdown errors missing source filename (#3514)
This commit is contained in:
parent
3057801591
commit
6c955ca643
2 changed files with 32 additions and 0 deletions
5
.changeset/hot-waves-jump.md
Normal file
5
.changeset/hot-waves-jump.md
Normal file
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
'@astrojs/markdown-remark': patch
|
||||
---
|
||||
|
||||
Fix Markdown errors missing source filename
|
|
@ -109,6 +109,9 @@ export async function renderMarkdown(
|
|||
.process(input);
|
||||
result = vfile.toString();
|
||||
} catch (err) {
|
||||
// Ensure that the error message contains the input filename
|
||||
// to make it easier for the user to fix the issue
|
||||
err = prefixError(err, `Failed to parse Markdown file "${input.path}"`);
|
||||
console.error(err);
|
||||
throw err;
|
||||
}
|
||||
|
@ -118,3 +121,27 @@ export async function renderMarkdown(
|
|||
code: result.toString(),
|
||||
};
|
||||
}
|
||||
|
||||
function prefixError(err: any, prefix: string) {
|
||||
// If the error is an object with a `message` property, attempt to prefix the message
|
||||
if (err && err.message) {
|
||||
try {
|
||||
err.message = `${prefix}:\n${err.message}`;
|
||||
return err;
|
||||
} catch (error) {
|
||||
// Any errors here are ok, there's fallback code below
|
||||
}
|
||||
}
|
||||
|
||||
// If that failed, create a new error with the desired message and attempt to keep the stack
|
||||
const wrappedError = new Error(`${prefix}${err ? `: ${err}` : ''}`);
|
||||
try {
|
||||
wrappedError.stack = err.stack;
|
||||
// @ts-ignore
|
||||
wrappedError.cause = err;
|
||||
} catch (error) {
|
||||
// It's ok if we could not set the stack or cause - the message is the most important part
|
||||
}
|
||||
|
||||
return wrappedError;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue