Fix Markdown errors missing source filename (#3514)

This commit is contained in:
hippotastic 2022-06-03 15:38:57 +02:00 committed by GitHub
parent 3057801591
commit 6c955ca643
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 32 additions and 0 deletions

View file

@ -0,0 +1,5 @@
---
'@astrojs/markdown-remark': patch
---
Fix Markdown errors missing source filename

View file

@ -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;
}