Ensure CSR fallback only happens on actual errors #871
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
References
Fixes issue introduced by #863
Description
This PR fixes an issue introduced by #863, which caused the error handler on the express server to be triggered when there were no errors.
Instructions for Reviewers
In #863 we switched to the native express error handler. But we noticed on dspace-demo that the error fallback happens for every request.
The reason is that it's not a dedicated error handler, but simply the next function in the chain that can make changes to the response. There's only an error if
err
is defined.This PR fixes that issue by checking if there's an error, and if not, passing the data from the previous function (the angular app) through.
To test it, triggering a 404 (as suggested in #863) is not sufficient for causing an actual express error. So I suggest you simply add
throw new Error('A test error');
to the constructor of ServerAppModule, in which case you should seeError in SSR, serving for direct CSR
in the server output with a stack trace. And if you leave it out that fallback shouldn't trigger, so that message shouldn't be there.Checklist
yarn run lint
package.json
), I've made sure their licenses align with the DSpace BSD License based on the Licensing of Contributions documentation.