SvelteKit部署Express子路由后登录重定向路径异常问题
解决SvelteKit挂载Express子路由后重定向路径错误的问题
1. 配置SvelteKit基础路径
在项目根目录的svelte.config.js中,设置kit.paths.base为你的子路由前缀,让SvelteKit知晓自身运行在子路由下:
import adapter from '@sveltejs/adapter-node'; /** @type {import('@sveltejs/kit').Config} */ const config = { kit: { adapter: adapter(), paths: { base: '/newapp' } } }; export default config;
这个配置会让SvelteKit生成的所有路由、静态资源路径、重定向地址自动带上/newapp前缀,包括未登录时的跳转目标会从/login变为/newapp/login。
2. 重新构建SvelteKit应用
修改配置后,执行构建命令更新产物:
npm run build
3. 保留现有Express挂载配置
你的Express挂载代码无需改动,继续使用:
import { handler } from './build/handler.js'; app.use('/newapp', handler);
额外注意事项
- 如果应用中有手动编写的重定向逻辑(比如
+page.server.js或hooks里的redirect调用),要通过$app/paths导入base变量拼接路径,避免硬编码:import { redirect } from '@sveltejs/kit'; import { base } from '$app/paths'; export async function load() { // 未登录时重定向 throw redirect(302, `${base}/login`); } - 静态资源引用会自动适配base路径,无需额外调整。
内容的提问来源于stack exchange,提问作者radop33392
相关产品推荐
相关产品推荐

