diff --git a/src/lib/functions/synchronous.js b/src/lib/functions/synchronous.js index e203fbf3a2c..2af21d4d5af 100644 --- a/src/lib/functions/synchronous.js +++ b/src/lib/functions/synchronous.js @@ -1,9 +1,8 @@ // @ts-check const { Buffer } = require('buffer') -const { readFile } = require('fs').promises -const { join } = require('path') const { NETLIFYDEVERR } = require('../../utils') +const renderErrorTemplate = require('../render-error-remplate') const { detectAwsSdkError } = require('./utils') @@ -47,25 +46,13 @@ const formatLambdaLocalError = (err, acceptsHtml) => }) : `${err.errorType}: ${err.errorMessage}\n ${err.stackTrace.join('\n ')}` -let errorTemplateFile - -const renderErrorTemplate = async (errString) => { - const regexPattern = //g - const templatePath = './templates/function-error.html' - - try { - errorTemplateFile = errorTemplateFile || (await readFile(join(__dirname, templatePath), 'utf-8')) - return errorTemplateFile.replace(regexPattern, errString) - } catch { - return errString - } -} - const processRenderedResponse = async (err, request) => { const acceptsHtml = request.headers && request.headers.accept && request.headers.accept.includes('text/html') const errorString = typeof err === 'string' ? err : formatLambdaLocalError(err, acceptsHtml) - return acceptsHtml ? await renderErrorTemplate(errorString) : errorString + return acceptsHtml + ? await renderErrorTemplate(errorString, './templates/function-error.html', 'function') + : errorString } const handleErr = async (err, request, response) => { diff --git a/src/lib/render-error-remplate.js b/src/lib/render-error-remplate.js new file mode 100644 index 00000000000..766f153b666 --- /dev/null +++ b/src/lib/render-error-remplate.js @@ -0,0 +1,17 @@ +const { readFile } = require('fs').promises +const { join } = require('path') + +let errorTemplateFile + +const renderErrorTemplate = async (errString, templatePath, functionType) => { + const errorDetailsRegex = //g + const functionTypeRegex = //g + try { + errorTemplateFile = errorTemplateFile || (await readFile(join(__dirname, templatePath), 'utf-8')) + return errorTemplateFile.replace(errorDetailsRegex, errString).replace(functionTypeRegex, functionType) + } catch { + return errString + } +} + +module.exports = renderErrorTemplate diff --git a/src/lib/functions/templates/function-error.html b/src/lib/templates/function-error.html similarity index 81% rename from src/lib/functions/templates/function-error.html rename to src/lib/templates/function-error.html index 480dba0c4ec..b32ee4231b1 100644 --- a/src/lib/functions/templates/function-error.html +++ b/src/lib/templates/function-error.html @@ -24,6 +24,7 @@ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; color: var(--colorDefaultTextColor); + margin: 0; } main { @@ -196,7 +197,9 @@
An unhandled error in the function code triggered the following message:
-
-
-
-
-
-