Enable backend to serve frontend (#4461)
Basic POC to have frontend served by backend
This commit is contained in:
@ -5,10 +5,29 @@ declare global {
|
||||
}
|
||||
}
|
||||
|
||||
const getDefaultUrl = () => {
|
||||
if (
|
||||
window.location.hostname === 'localhost' ||
|
||||
window.location.hostname === '127.0.0.1'
|
||||
) {
|
||||
// In development environment front and backend usually run on seperate ports
|
||||
// we set the default value to localhost:3000.
|
||||
// It dev context, we use env vars to overwrite it
|
||||
return 'http://localhost:3000';
|
||||
} else {
|
||||
// Outside of localhost we assume that they run on the same port
|
||||
// because the backend will serve the frontend
|
||||
// It prod context, we use env-config.js + window var to ovewrite it
|
||||
return `${window.location.protocol}//${window.location.hostname}${
|
||||
window.location.port ? `:${window.location.port}` : ''
|
||||
}`;
|
||||
}
|
||||
};
|
||||
|
||||
export const REACT_APP_SERVER_BASE_URL =
|
||||
window._env_?.REACT_APP_SERVER_BASE_URL ||
|
||||
process.env.REACT_APP_SERVER_BASE_URL ||
|
||||
'http://localhost:3000';
|
||||
getDefaultUrl();
|
||||
|
||||
export const REACT_APP_SERVER_AUTH_URL =
|
||||
window._env_?.REACT_APP_SERVER_AUTH_URL ||
|
||||
|
||||
@ -1,6 +1,10 @@
|
||||
import { Module } from '@nestjs/common';
|
||||
import { DynamicModule, Module } from '@nestjs/common';
|
||||
import { GraphQLModule } from '@nestjs/graphql';
|
||||
import { ConfigModule } from '@nestjs/config';
|
||||
import { ServeStaticModule } from '@nestjs/serve-static';
|
||||
|
||||
import { existsSync } from 'fs';
|
||||
import { join } from 'path';
|
||||
|
||||
import { YogaDriver, YogaDriverConfig } from '@graphql-yoga/nestjs';
|
||||
|
||||
@ -26,6 +30,22 @@ import { GraphQLConfigModule } from './graphql-config/graphql-config.module';
|
||||
IntegrationsModule,
|
||||
CoreModule,
|
||||
WorkspaceModule,
|
||||
...AppModule.getConditionalModules(),
|
||||
],
|
||||
})
|
||||
export class AppModule {}
|
||||
export class AppModule {
|
||||
private static getConditionalModules(): DynamicModule[] {
|
||||
const modules: DynamicModule[] = [];
|
||||
const frontPath = join(__dirname, '..', 'front');
|
||||
|
||||
if (existsSync(frontPath)) {
|
||||
modules.push(
|
||||
ServeStaticModule.forRoot({
|
||||
rootPath: frontPath,
|
||||
}),
|
||||
);
|
||||
}
|
||||
|
||||
return modules;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user