angular/integration/platform-server/projects/ngmodule/prerender.ts
Alan Agius 0875b519b9 fix(platform-server): surface errors during rendering (#50587)
Prior to this change in some cases errors tht happen during routing were not being surfaced. This is due to the fact that the router has floating promises, and the platform was being destroyed prior to these being settled.

PR Close #50587
2023-06-07 12:44:08 -07:00

43 lines
1.2 KiB
TypeScript

/**
* @license
* Copyright Google LLC All Rights Reserved.
*
* Use of this source code is governed by an MIT-style license that can be
* found in the LICENSE file at https://angular.io/license
*/
/* tslint:disable:no-console */
import 'zone.js/node';
import {join} from 'path';
import {renderModule} from '@angular/platform-server';
import {readFileSync} from 'fs';
import {AppServerModule} from './src/main.server';
const distFolder = join(process.cwd(), 'dist/ngmodule/browser');
const indexHtml = readFileSync(join(distFolder, 'index.html'), 'utf-8');
async function runTest() {
// Test and validate the errors are printed in the console.
const originalConsoleError = console.error;
const errors: string[] = [];
console.error = (error, data) => errors.push(error.toString() + ' ' + data.toString());
try {
await renderModule(AppServerModule, {
document: indexHtml,
url: '/error',
});
} catch {}
console.error = originalConsoleError;
// Test case
if (!errors.some((e) => e.includes('Error in resolver'))) {
errors.forEach(console.error);
console.error(
'\nError: expected rendering errors ("Error in resolver") to be printed in the console.\n'
);
process.exit(1);
}
}
runTest();