commands: Show server error info in browser

The main item in this commit is showing of errors with a file context when running `hugo server`.

This can be turned off: `hugo server --disableBrowserError` (can also be set in `config.toml`).

But to get there, the error handling in Hugo needed a revision. There are some items left TODO for commits soon to follow, most notable errors in content and config files.

Fixes #5284
Fixes #5290
See #5325
See #5324
This commit is contained in:
Bjørn Erik Pedersen
2018-10-03 14:58:09 +02:00
parent 3a3089121b
commit 35fbfb19a1
73 changed files with 1914 additions and 668 deletions

View File

@@ -19,6 +19,8 @@ import (
"strings"
"sync"
"github.com/pkg/errors"
"github.com/gohugoio/hugo/output"
)
@@ -30,7 +32,7 @@ func (s *Site) renderPages(cfg *BuildCfg) error {
pages := make(chan *Page)
errs := make(chan error)
go errorCollator(results, errs)
go s.errorCollator(results, errs)
numWorkers := getGoMaxProcs() * 4
@@ -60,7 +62,7 @@ func (s *Site) renderPages(cfg *BuildCfg) error {
err := <-errs
if err != nil {
return fmt.Errorf("Error(s) rendering pages: %s", err)
return errors.Wrap(err, "failed to render pages")
}
return nil
}
@@ -132,6 +134,7 @@ func pageRenderer(s *Site, pages <-chan *Page, results chan<- error, wg *sync.Wa
if shouldRender {
if err := pageOutput.renderResources(); err != nil {
// TODO(bep) 2errors
s.Log.ERROR.Printf("Failed to render resources for page %q: %s", page, err)
continue
}