Skip to content

Commit

Permalink
fix(angular): do not wrap bootstrap call when setting up ssr in works…
Browse files Browse the repository at this point in the history
…paces with angular >= 15.2.0 (#16714)
  • Loading branch information
leosvelperez authored May 3, 2023
1 parent 68c262d commit ae89df9
Show file tree
Hide file tree
Showing 6 changed files with 70 additions and 48 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -22,21 +22,7 @@ export class AppModule {}
`;

exports[`Host App Generator --ssr should generate the correct files 2`] = `
"import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { AppModule } from './app/app.module';
function bootstrap() {
platformBrowserDynamic()
.bootstrapModule(AppModule)
.catch((err) => console.error(err));
}
if (document.readyState !== 'loading') {
bootstrap();
} else {
document.addEventListener('DOMContentLoaded', bootstrap);
}
"import('./bootstrap').catch((err) => console.error(err));
"
`;

Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { AppModule } from './app/app.module';

function bootstrap() {
platformBrowserDynamic()
.bootstrapModule(AppModule)
.catch((err) => console.error(err));
}

if (document.readyState !== 'loading') {
bootstrap();
} else {
document.addEventListener('DOMContentLoaded', bootstrap);
}
18 changes: 16 additions & 2 deletions packages/angular/src/generators/setup-ssr/lib/generate-files.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,12 @@ import {
joinPathFragments,
readProjectConfiguration,
} from '@nx/devkit';
import { getInstalledAngularMajorVersion } from '../../utils/version-utils';
import {
getInstalledAngularMajorVersion,
getInstalledAngularVersionInfo,
} from '../../utils/version-utils';
import type { Schema } from '../schema';
import { lt } from 'semver';

export function generateSSRFiles(tree: Tree, schema: Schema) {
const projectRoot = readProjectConfiguration(tree, schema.project).root;
Expand All @@ -17,7 +21,8 @@ export function generateSSRFiles(tree: Tree, schema: Schema) {
{ ...schema, tpl: '' }
);

const angularMajorVersion = getInstalledAngularMajorVersion(tree);
const { major: angularMajorVersion, version: angularVersion } =
getInstalledAngularVersionInfo(tree);
if (angularMajorVersion < 15) {
generateFiles(
tree,
Expand All @@ -26,4 +31,13 @@ export function generateSSRFiles(tree: Tree, schema: Schema) {
{ ...schema, tpl: '' }
);
}

if (lt(angularVersion, '15.2.0')) {
generateFiles(
tree,
joinPathFragments(__dirname, '..', 'files', 'pre-v15-2'),
projectRoot,
{ ...schema, tpl: '' }
);
}
}
50 changes: 38 additions & 12 deletions packages/angular/src/generators/setup-ssr/setup-ssr.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -35,20 +35,11 @@ describe('setupSSR', () => {
`);
expect(tree.read('apps/app1/src/main.ts', 'utf-8')).toMatchInlineSnapshot(`
"import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { AppModule } from './app/app.module';
function bootstrap() {
platformBrowserDynamic()
.bootstrapModule(AppModule)
.catch((err) => console.error(err));
}
if (document.readyState !== 'loading') {
bootstrap();
} else {
document.addEventListener('DOMContentLoaded', bootstrap);
}
platformBrowserDynamic()
.bootstrapModule(AppModule)
.catch((err) => console.error(err));
"
`);
expect(tree.read('apps/app1/tsconfig.server.json', 'utf-8'))
Expand Down Expand Up @@ -220,5 +211,40 @@ describe('setupSSR', () => {
"
`);
});

it('should wrap bootstrap call for Angular versions lower than 15.2', async () => {
// ARRANGE
const tree = createTreeWithEmptyWorkspace({ layout: 'apps-libs' });
await generateTestApplication(tree, {
name: 'app1',
});
updateJson(tree, 'package.json', (json) => ({
...json,
dependencies: { '@angular/core': '15.1.0' },
}));

// ACT
await setupSsr(tree, { project: 'app1' });

// ASSERT
expect(tree.read('apps/app1/src/main.ts', 'utf-8'))
.toMatchInlineSnapshot(`
"import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { AppModule } from './app/app.module';
function bootstrap() {
platformBrowserDynamic()
.bootstrapModule(AppModule)
.catch((err) => console.error(err));
}
if (document.readyState !== 'loading') {
bootstrap();
} else {
document.addEventListener('DOMContentLoaded', bootstrap);
}
"
`);
});
});
});
Original file line number Diff line number Diff line change
Expand Up @@ -78,8 +78,6 @@ describe('updateFileServerExecutor', () => {
addProjectConfiguration(tree, 'test', project);

// ACT
expect(async () => {
await updateFileServerExecutor(tree);
}).not.toThrow();
await expect(updateFileServerExecutor(tree)).resolves.not.toThrow();
});
});

0 comments on commit ae89df9

Please sign in to comment.