fix(angular): do not wrap bootstrap call when setting up ssr in workspaces with angular >= 15.2.0 (#16714)
This commit is contained in:
parent
68c262d933
commit
ae89df9482
@ -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));
|
||||
"
|
||||
`;
|
||||
|
||||
|
||||
@ -1,16 +0,0 @@
|
||||
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);
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
@ -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;
|
||||
@ -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,
|
||||
@ -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: '' }
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@ -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'))
|
||||
@ -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);
|
||||
}
|
||||
"
|
||||
`);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@ -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();
|
||||
});
|
||||
});
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user