fix: host app with subpath (#11739)

closes #11719
This commit is contained in:
forehalo
2025-04-17 01:29:48 +00:00
parent 268c34e8b5
commit 18fae0f1aa
6 changed files with 13 additions and 6 deletions
@@ -57,7 +57,7 @@ Default to be \`[server.protocol]://[server.host][:server.port]\` if not specifi
env: ['AFFINE_SERVER_PORT', 'integer'],
},
path: {
desc: 'Subpath where the server get deployed if there is.',
desc: 'Subpath where the server get deployed if there is one.(e.g. /affine)',
default: '',
env: 'AFFINE_SERVER_SUB_PATH',
},
@@ -5,7 +5,7 @@ import { Controller, Get, Logger, Req, Res } from '@nestjs/common';
import type { Request, Response } from 'express';
import isMobile from 'is-mobile';
import { metrics } from '../../base';
import { Config, metrics } from '../../base';
import { Models } from '../../models';
import { htmlSanitize } from '../../native';
import { Public } from '../auth';
@@ -51,7 +51,8 @@ export class DocRendererController {
constructor(
private readonly doc: DocReader,
private readonly models: Models
private readonly models: Models,
private readonly config: Config
) {
this.webAssets = this.readHtmlAssets(join(env.projectRoot, 'static'));
this.mobileAssets = this.readHtmlAssets(
@@ -140,6 +141,7 @@ export class DocRendererController {
// TODO(@forehalo): how can we enable the type reference to @affine/env
const envMeta: Record<string, any> = {
publicPath: assets.publicPath,
subPath: this.config.server.path,
renderer: 'ssr',
};
+3 -1
View File
@@ -16,8 +16,10 @@ export function setupGlobal() {
isPwa: false,
isMobile: false,
isSelfHosted: false,
// publicPath is the root of assets files
publicPath: '/',
workerPath: '/js/',
// subPath is the path to access the affine service
subPath: '',
};
if (globalThis.navigator) {
+3 -1
View File
@@ -1,5 +1,7 @@
export function getWorkerUrl(name: string) {
return (
environment.workerPath + `${name}-${BUILD_CONFIG.appVersion}.worker.js`
environment.publicPath +
'js/' +
`${name}-${BUILD_CONFIG.appVersion}.worker.js`
);
}
@@ -188,6 +188,7 @@ const createBrowserRouter = wrapCreateBrowserRouterV6(
export const router = (
window.SENTRY_RELEASE ? createBrowserRouter : reactRouterCreateBrowserRouter
)(topLevelRoutes, {
basename: environment.subPath,
future: {
v7_normalizeFormMethod: true,
},
+1 -1
View File
@@ -37,7 +37,7 @@ declare type Environment = {
// runtime configs
publicPath: string;
workerPath: string
subPath: string;
};
var process: {