fix(v2): include base url in 404 route (#2237)

* fix(v2): include base url in 404 route

* Update tests
This commit is contained in:
Alexey Pyltsyn 2020-01-22 04:00:38 +03:00 committed by Yangshun Tay
parent 2d08787ed5
commit 06044cffa7
4 changed files with 22 additions and 18 deletions

View file

@ -55,7 +55,7 @@ export default [
];
",
"routesPaths": Array [
"404.html",
"/404.html",
"/blog",
],
}
@ -141,7 +141,7 @@ export default [
];
",
"routesPaths": Array [
"404.html",
"/404.html",
"/docs/hello",
"docs/foo/baz",
],
@ -181,7 +181,7 @@ export default [
];
",
"routesPaths": Array [
"404.html",
"/404.html",
"",
],
}

View file

@ -36,7 +36,7 @@ describe('loadRoutes', () => {
},
],
};
const result = await loadRoutes([nestedRouteConfig]);
const result = await loadRoutes([nestedRouteConfig], '/');
expect(result).toMatchSnapshot();
});
@ -64,7 +64,7 @@ describe('loadRoutes', () => {
],
},
};
const result = await loadRoutes([flatRouteConfig]);
const result = await loadRoutes([flatRouteConfig], '/');
expect(result).toMatchSnapshot();
});
@ -73,20 +73,21 @@ describe('loadRoutes', () => {
component: 'hello/world.js',
} as RouteConfig;
expect(loadRoutes([routeConfigWithoutPath])).rejects.toMatchInlineSnapshot(`
[Error: Invalid routeConfig (Path must be a string and component is required)
{"component":"hello/world.js"}]
`);
expect(loadRoutes([routeConfigWithoutPath], '/')).rejects
.toMatchInlineSnapshot(`
[Error: Invalid routeConfig (Path must be a string and component is required)
{"component":"hello/world.js"}]
`);
const routeConfigWithoutComponent = {
path: '/hello/world',
} as RouteConfig;
expect(loadRoutes([routeConfigWithoutComponent])).rejects
expect(loadRoutes([routeConfigWithoutComponent], '/')).rejects
.toMatchInlineSnapshot(`
[Error: Invalid routeConfig (Path must be a string and component is required)
{"path":"/hello/world"}]
`);
[Error: Invalid routeConfig (Path must be a string and component is required)
{"path":"/hello/world"}]
`);
});
test('route config with empty (but valid) path string', async () => {
@ -95,7 +96,7 @@ describe('loadRoutes', () => {
component: 'hello/world.js',
} as RouteConfig;
const result = await loadRoutes([routeConfig]);
const result = await loadRoutes([routeConfig], '/');
expect(result).toMatchSnapshot();
});
});

View file

@ -143,7 +143,7 @@ export async function load(siteDir: string): Promise<Props> {
routesChunkNames,
routesConfig,
routesPaths,
} = await loadRoutes(pluginsRouteConfigs);
} = await loadRoutes(pluginsRouteConfigs, baseUrl);
const genRegistry = generate(
generatedFilesDir,

View file

@ -5,7 +5,7 @@
* LICENSE file in the root directory of this source tree.
*/
import {genChunkName} from '@docusaurus/utils';
import {genChunkName, normalizeUrl} from '@docusaurus/utils';
import _ from 'lodash';
import {stringify} from 'querystring';
import {
@ -38,7 +38,10 @@ function getModulePath(target: Module): string {
return `${target.path}${queryStr}`;
}
export async function loadRoutes(pluginsRouteConfigs: RouteConfig[]) {
export async function loadRoutes(
pluginsRouteConfigs: RouteConfig[],
baseUrl: string,
) {
const routesImports = [
`import React from 'react';`,
`import ComponentCreator from '@docusaurus/ComponentCreator';`,
@ -46,7 +49,7 @@ export async function loadRoutes(pluginsRouteConfigs: RouteConfig[]) {
const registry: {
[chunkName: string]: ChunkRegistry;
} = {};
const routesPaths: string[] = ['404.html'];
const routesPaths: string[] = [normalizeUrl([baseUrl, '404.html'])];
const routesChunkNames: {
[routePath: string]: ChunkNames;
} = {};