You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AdonisJS+Inertia+Svelte路由跳转报错:仅接收JSON响应而非Inertia响应

问题分析与解决

核心问题:控制器类名与路由引用不匹配

你的路由配置指向了SecondsController.index,但实际导出的控制器类名是PostsController,AdonisJS找不到正确的控制器,返回了错误的JSON响应而非Inertia要求的响应格式,直接触发了这个报错。

修复步骤

  1. 修正控制器类名
    把控制器的类名改成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 })
      }
    }
    
  2. 验证控制器文件命名
    确保控制器文件名叫SecondsController.ts(或.js,看你项目配置),放在app/Controllers/Http目录下,AdonisJS会根据文件名自动映射控制器类。

  3. 检查页面链接组件
    确认Home.svelte里用的是Inertia的<Link>组件,而不是普通的<a>标签,比如:

    <Link href="/second">跳转到第二页</Link>
    

额外排查点

  • 清一下浏览器缓存,避免旧响应缓存干扰
  • 看AdonisJS的日志(storage/logs目录下),确认有没有控制器找不到的错误日志,进一步验证问题

内容的提问来源于stack exchange,提问作者Nietore

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 07:01:22