мы используем angular 8 как универсальный ssr и prerender. Ниже кода, когда я использую prerender с expressjs, но по какой-то причине после того, как страница предварительно отображается, URL добавляет в конце дополнительный sla sh, что делает страницу не индексируемой, затем angular перенаправляет javascript на нужную страницу.
angular страница универсального предварительного отображения сделает URL похожим на
https://www.mywebsite.com/home/
затем перенаправляет
https://www.mywebsite.com/home
первый URL-адрес с пререндированным
Есть идеи, почему? и что мне нужно, чтобы это исправить?
import 'zone.js/dist/zone-node';
import 'reflect-metadata';
import {readFileSync, writeFileSync, existsSync, mkdirSync} from 'fs';
import {join} from 'path';
import {enableProdMode} from '@angular/core';
// Faster server renders w/ Prod mode (dev mode never needed)
enableProdMode();
// Import module map for lazy loading
import {provideModuleMap} from '@nguniversal/module-map-ngfactory-loader';
import {renderModuleFactory} from '@angular/platform-server';
import { ROUTESStaticPages } from './prerender-static-pages';
// * NOTE :: leave this as require() since this file is built Dynamically from webpack
const {AppServerModuleNgFactory, LAZY_MODULE_MAP} = require('./dist/server/main');
const BROWSER_FOLDER = join(process.cwd(), 'project');
// Load the index.html file containing referances to your application bundle.
const index = readFileSync(join('project', 'index.html'), 'utf8');
let previousRender = Promise.resolve();
// Iterate each route path
ROUTESStaticPages.forEach(route => {
const fullPath = join(BROWSER_FOLDER, route);
// Make sure the directory structure is there
if (!existsSync(fullPath)) {
mkdirSync(fullPath);
}
// Writes rendered HTML to index.html, replacing the file if it already exists.
previousRender = previousRender.then(_ => renderModuleFactory(AppServerModuleNgFactory, {
document: index,
url: route,
extraProviders: [
provideModuleMap(LAZY_MODULE_MAP),
{ provide: 'APP_BASE_URL', useFactory: () => '123124531254', deps: [] },
{ provide: 'APP_REQ_HEADERS', useFactory: () => JSON.stringify('94384239572'), deps: []},
]
})).then(html => writeFileSync(join(fullPath, 'index.html'), html));
});
и в ROUTESStaticPages URL-адреса перечислены так:
export const ROUTESStaticPages = [
'/',
'/home',
'/login',
'/login/createlogin',
'/login/resetpassword',
'/pages',
'/pages/about-us',
];