rolled back changes to render, re-jiggled handling of errors in generate.

This commit is contained in:
johan.roxendal@gu.se 2017-05-05 11:30:30 +02:00
parent d469f38d98
commit 70f959ccb8
2 changed files with 18 additions and 22 deletions

View File

@ -98,18 +98,21 @@ export default function () {
yield routes.splice(0, 500).map((route) => { yield routes.splice(0, 500).map((route) => {
return co(function * () { return co(function * () {
yield waitFor(n++ * self.options.generate.interval) yield waitFor(n++ * self.options.generate.interval)
try {
var { html, error } = yield self.renderRoute(route, { _generate: true }) var { html, error } = yield self.renderRoute(route, { _generate: true })
// TODO: if error is truthy and html null, do continue
if(error) { if(error) {
// console.log("error caught", error) errors.push({type : "handled", route, error})
errors.push([route, error.errorObj]) }
} catch(err) {
errors.push({type : "unhandled", route, error : err})
return return
} }
try { try {
var minifiedHtml = minify(html, self.options.generate.minify) var minifiedHtml = minify(html, self.options.generate.minify)
} catch(err) { } catch(err) {
let minifyErr = new Error(`HTML minification failed. Make sure the route generates valid HTML. Failed HTML:\n ${html}`) let minifyErr = new Error(`HTML minification failed. Make sure the route generates valid HTML. Failed HTML:\n ${html}`)
errors.push([route, minifyErr]) errors.push({type : "unhandled", route, error : minifyErr})
return return
} }
var path = join(route, sep, 'index.html') // /about -> /about/index.html var path = join(route, sep, 'index.html') // /about -> /about/index.html
@ -134,8 +137,13 @@ export default function () {
debug(`HTML Files generated in ${duration}s`) debug(`HTML Files generated in ${duration}s`)
if(errors.length) { if(errors.length) {
console.error("==== Error report ==== \n" + errors.map( ([route, err]) => { console.error("==== Error report ==== \n" + errors.map( ({type, route, error}) => {
return `Route: '${route}'\n${err.stack}` if(type == "unhandled") {
return `Route: '${route}'\n${error.stack}`
} else {
return `Route: '${route}' returned an error via context.error: \n` +
JSON.stringify(error)
}
}).join("\n\n")) }).join("\n\n"))
} }
return this return this

View File

@ -96,19 +96,7 @@ export function renderRoute (url, context = {}) {
// Call renderToSting from the bundleRenderer and generate the HTML (will update the context as well) // Call renderToSting from the bundleRenderer and generate the HTML (will update the context as well)
const self = this const self = this
return co(function * () { return co(function * () {
try { let APP = yield self.renderToString(context)
var APP = yield self.renderToString(context)
} catch(err) {
return {
html : null,
error : {
statusCode : 500,
message : err.message,
errorObj : err
},
redirected: context.redirected
}
}
if (!context.nuxt.serverRendered) { if (!context.nuxt.serverRendered) {
APP = '<div id="__nuxt"></div>' APP = '<div id="__nuxt"></div>'
} }