mirror of
https://github.com/dillonkearns/elm-pages-v3-beta.git
synced 2024-11-28 14:34:18 +03:00
Add safe error formatter function that prints raw error if it can't be JSON parsed, and improve error output for build.
This commit is contained in:
parent
a7f2fa7eda
commit
a0462a647e
@ -2,7 +2,7 @@ const fs = require("./dir-helpers.js");
|
||||
const fsPromises = require("fs").promises;
|
||||
|
||||
const { runElmReview } = require("./compile-elm.js");
|
||||
const { restoreColor } = require("./error-formatter");
|
||||
const { restoreColorSafe } = require("./error-formatter");
|
||||
const path = require("path");
|
||||
const spawnCallback = require("cross-spawn").spawn;
|
||||
const codegen = require("./codegen.js");
|
||||
@ -22,7 +22,7 @@ const DIR_PATH = path.join(process.cwd());
|
||||
const OUTPUT_FILE_NAME = "elm.js";
|
||||
|
||||
process.on("unhandledRejection", (error) => {
|
||||
console.trace("Unhandled: ", error);
|
||||
console.log(error);
|
||||
process.exitCode = 1;
|
||||
});
|
||||
|
||||
@ -84,13 +84,12 @@ async function run(options) {
|
||||
if (isParsingError) {
|
||||
console.error(error);
|
||||
} else {
|
||||
console.error(restoreColor(reviewOutput));
|
||||
console.error(restoreColorSafe(reviewOutput));
|
||||
}
|
||||
process.exit(1);
|
||||
process.exitCode = 1;
|
||||
} catch (noElmReviewErrors) {
|
||||
console.error(error);
|
||||
} finally {
|
||||
process.exit(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -112,7 +111,7 @@ function initWorker(basePath) {
|
||||
pagesReady(JSON.parse(message.data));
|
||||
} else if (message.tag === "error") {
|
||||
process.exitCode = 1;
|
||||
console.error(restoreColor(message.data));
|
||||
console.error(restoreColorSafe(message.data));
|
||||
buildNextPage(newWorker);
|
||||
} else if (message.tag === "done") {
|
||||
buildNextPage(newWorker);
|
||||
@ -282,9 +281,8 @@ function runElmMake(options, elmEntrypointPath, outputPath, cwd) {
|
||||
} else {
|
||||
if (!buildError) {
|
||||
buildError = true;
|
||||
process.exitCode = 1;
|
||||
try {
|
||||
reject(restoreColor(JSON.parse(commandOutput)));
|
||||
reject(restoreColorSafe(commandOutput));
|
||||
} catch (error) {
|
||||
reject(commandOutput);
|
||||
}
|
||||
|
@ -106,6 +106,19 @@ const restoreColor = (error) => {
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {string} error
|
||||
* @returns {string}
|
||||
*/
|
||||
function restoreColorSafe(error) {
|
||||
try {
|
||||
const asJson = JSON.parse(error);
|
||||
return restoreColor(asJson);
|
||||
} catch (e) {
|
||||
return error;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* parseMsg :: { errors: Array } -> String
|
||||
*
|
||||
@ -126,7 +139,7 @@ const restoreProblem =
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = { restoreColor };
|
||||
module.exports = { restoreColor, restoreColorSafe };
|
||||
|
||||
/** @typedef { CompilerError | ReportError | IElmReviewError } RootObject */
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user