Skip to content

Commit 5eeff15

Browse files
authoredMar 18, 2025··
fix(vite-plugin-nitro): handle Nitro Base URL for API routes in development (#1653)
1 parent 5ac7c6d commit 5eeff15

File tree

1 file changed

+9
-5
lines changed

1 file changed

+9
-5
lines changed
 

‎packages/vite-plugin-nitro/src/lib/vite-plugin-nitro.ts

+9-5
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ const __dirname = dirname(__filename);
3131
export function nitro(options?: Options, nitroOptions?: NitroConfig): Plugin[] {
3232
const workspaceRoot = options?.workspaceRoot ?? process.cwd();
3333
let isTest = process.env['NODE_ENV'] === 'test' || !!process.env['VITEST'];
34+
const baseURL = process.env['NITRO_APP_BASE_URL'] || '';
35+
const prefix = baseURL ? baseURL.substring(0, baseURL.length - 1) : '';
3436
const apiPrefix = `/${options?.apiPrefix || 'api'}`;
3537
const useAPIMiddleware =
3638
typeof options?.useAPIMiddleware !== 'undefined'
@@ -122,6 +124,7 @@ export function nitro(options?: Options, nitroOptions?: NitroConfig): Plugin[] {
122124
},
123125
runtimeConfig: {
124126
apiPrefix: apiPrefix.substring(1),
127+
prefix,
125128
},
126129
rollupConfig: {
127130
onwarn(warning) {
@@ -152,7 +155,7 @@ export function nitro(options?: Options, nitroOptions?: NitroConfig): Plugin[] {
152155
: useAPIMiddleware
153156
? undefined
154157
: {
155-
[`${apiPrefix}/**`]: {
158+
[`${prefix}${apiPrefix}/**`]: {
156159
proxy: { to: '/**' },
157160
},
158161
},
@@ -164,7 +167,8 @@ export function nitro(options?: Options, nitroOptions?: NitroConfig): Plugin[] {
164167
import { useRuntimeConfig } from '#imports';
165168
166169
export default eventHandler(async (event) => {
167-
const apiPrefix = \`/\${useRuntimeConfig().apiPrefix}\`;
170+
const prefix = useRuntimeConfig().prefix;
171+
const apiPrefix = \`\${prefix}/\${useRuntimeConfig().apiPrefix}\`;
168172
169173
if (event.node.req.url?.startsWith(apiPrefix)) {
170174
const reqUrl = event.node.req.url?.replace(apiPrefix, '');
@@ -411,7 +415,7 @@ export function nitro(options?: Options, nitroOptions?: NitroConfig): Plugin[] {
411415
if (hasAPIDir) {
412416
viteServer.middlewares.use(
413417
(req: IncomingMessage, res: ServerResponse, next: Function) => {
414-
if (req.url?.startsWith(apiPrefix)) {
418+
if (req.url?.startsWith(`${prefix}${apiPrefix}`)) {
415419
apiHandler(req, res);
416420
return;
417421
}
@@ -436,7 +440,7 @@ export function nitro(options?: Options, nitroOptions?: NitroConfig): Plugin[] {
436440
}
437441

438442
console.log(
439-
`\n\nThe server endpoints are accessible under the "${apiPrefix}" path.`,
443+
`\n\nThe server endpoints are accessible under the "${prefix}${apiPrefix}" path.`,
440444
);
441445
}
442446
},
@@ -484,7 +488,7 @@ export function nitro(options?: Options, nitroOptions?: NitroConfig): Plugin[] {
484488
config() {
485489
return {
486490
define: {
487-
ANALOG_API_PREFIX: `"${apiPrefix.substring(1)}"`,
491+
ANALOG_API_PREFIX: `"${baseURL.substring(1)}${apiPrefix.substring(1)}"`,
488492
},
489493
};
490494
},

0 commit comments

Comments
 (0)
Please sign in to comment.