AdonisJS+Inertia+Svelte路由跳转报错:仅接收JSON响应而非Inertia响应
问题分析与解决
核心问题:控制器类名与路由引用不匹配
你的路由配置指向了SecondsController.index,但实际导出的控制器类名是PostsController,AdonisJS找不到正确的控制器,返回了错误的JSON响应而非Inertia要求的响应格式,直接触发了这个报错。
修复步骤
修正控制器类名
把控制器的类名改成SecondsController,和路由里引用的控制器保持一致:import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext' export default class SecondsController { // 这里改为SecondsController public async index({ inertia }: HttpContextContract) { const mydata = { title: "Second Page", content: "Some content here.", }; return inertia.render('Second', { mydata }) } }验证控制器文件命名
确保控制器文件名叫SecondsController.ts(或.js,看你项目配置),放在app/Controllers/Http目录下,AdonisJS会根据文件名自动映射控制器类。检查页面链接组件
确认Home.svelte里用的是Inertia的<Link>组件,而不是普通的<a>标签,比如:<Link href="/second">跳转到第二页</Link>
额外排查点
- 清一下浏览器缓存,避免旧响应缓存干扰
- 看AdonisJS的日志(
storage/logs目录下),确认有没有控制器找不到的错误日志,进一步验证问题
内容的提问来源于stack exchange,提问作者Nietore
相关产品推荐
相关产品推荐

