mirror of
https://github.com/DayuanJiang/next-ai-draw-io.git
synced 2026-09-02 01:20:23 +08:00
Support subdirectory deployment and fix API path handling (#311)
* feat: support subdirectory deployment (NEXT_PUBLIC_BASE_PATH) * removed unwanted check and fix favicon issue * Use getAssetUrl for manifest assets to avoid undefined NEXT_PUBLIC_BASE_PATH * Add validation warning for NEXT_PUBLIC_BASE_PATH format --------- Co-authored-by: dayuan.jiang <jdy.toh@gmail.com>
This commit is contained in:
37
lib/base-path.ts
Normal file
37
lib/base-path.ts
Normal file
@@ -0,0 +1,37 @@
|
||||
/**
|
||||
* Get the base path for API calls and static assets
|
||||
* This is used for subdirectory deployment support
|
||||
*
|
||||
* Example: If deployed at https://example.com/nextaidrawio, this returns "/nextaidrawio"
|
||||
* For root deployment, this returns ""
|
||||
*
|
||||
* Set NEXT_PUBLIC_BASE_PATH environment variable to your subdirectory path (e.g., /nextaidrawio)
|
||||
*/
|
||||
export function getBasePath(): string {
|
||||
// Read from environment variable (must start with NEXT_PUBLIC_ to be available on client)
|
||||
const basePath = process.env.NEXT_PUBLIC_BASE_PATH || ""
|
||||
if (basePath && !basePath.startsWith("/")) {
|
||||
console.warn("NEXT_PUBLIC_BASE_PATH should start with /")
|
||||
}
|
||||
return basePath
|
||||
}
|
||||
|
||||
/**
|
||||
* Get full API endpoint URL
|
||||
* @param endpoint - API endpoint path (e.g., "/api/chat", "/api/config")
|
||||
* @returns Full API path with base path prefix
|
||||
*/
|
||||
export function getApiEndpoint(endpoint: string): string {
|
||||
const basePath = getBasePath()
|
||||
return `${basePath}${endpoint}`
|
||||
}
|
||||
|
||||
/**
|
||||
* Get full static asset URL
|
||||
* @param assetPath - Asset path (e.g., "/example.png", "/chain-of-thought.txt")
|
||||
* @returns Full asset path with base path prefix
|
||||
*/
|
||||
export function getAssetUrl(assetPath: string): string {
|
||||
const basePath = getBasePath()
|
||||
return `${basePath}${assetPath}`
|
||||
}
|
||||
Reference in New Issue
Block a user