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

Laravel 10升级后Nova 4子导航点击出现Inertia响应错误求助

升级Laravel 9到10后Nova子导航点击触发Inertia响应错误
# 当前环境(本地Docker)
"php": "8.1"
"laravel/nova": "4.35.6"
"laravel/framework": "10.45.28"

按照官方升级指南将应用从Laravel 9升级到Laravel 10后,点击Nova子导航项时弹出错误提示:
"All Inertia requests must receive a valid Inertia response, however a plain JSON response was received."

配图:Laravel Nova打开子导航项时的错误界面

直接输入子页面URL(如/resources/products)可正常访问,但通过导航点击时,Nova返回的是常规JSON负载(包含配置和菜单数据),而非Inertia预期的合法响应。怀疑是中间件冲突或CORS配置问题,但排查后仍未解决。

已尝试的解决步骤

CORS配置调整

  • 在config/cors.php中添加'exposed_headers' => ['x-inertia'],但网络响应中未出现Access-Control-Expose-Headers: x-inertia头,怀疑被Nova覆盖

替换CORS中间件

  • 将Laravel 10内置CORS替换为fruitcake/laravel-cors包

依赖版本更新

php: "8.*" → "^8.1"
doctrine/dbal: "^2.8" → "^3.0"
laravel/framework: "9.*" → "10.*"
laravel/nova: "4.25.1" → "^4.35"
fruitcake/laravel-cors: "^2.0" → (已移除)
spatie/laravel-permission: "5.*" → "^6.0"
auth0/auth0-php: "8.3.1" → "^8.10"
auth0/login: "7.1" → "^7.8"
itsmejoshua/novaspatiepermissions: "^1.0" → (已移除)
kiritokatklian/nova-permission: (原无)→ "*"
# ...

执行清理与发布命令

删除/vendor和node_modules后运行:

composer update
npm i && npm run dev
php artisan route:clear && php artisan config:clear && php artisan cache:clear
php artisan optimize:clear
php artisan nova:publish

相关配置文件

/config/auth.php

// ...
'guards' => [
        'web' => [
            'driver' => 'session',
            'provider' => 'users',
        ],
],
 'providers' => [
        'users' => [
            'driver' =>  'eloquent',
            'model' => App\Models\User::class,
        ],
 ]

/config/cors.php

return [
    'paths' => ['*'],
    'allowed_methods' => ['*'],
    'allowed_origins' => ['*', 'http://localhost:3000', env('APP_URL')],
    'allowed_origins_patterns' => [],
    'allowed_headers' => ['*','content-type,x-inertia,x-inertia-version,x-requested-with'],
    'exposed_headers' => ['x-inertia'],
    'max_age' => 0,
    'supports_credentials' => true,
];

/config/nova.php

// ...
 'middleware' => [
        'web',
        HandleInertiaRequests::class,
        DispatchServingNovaEvent::class,
        BootTools::class,
        \Vyuldashev\NovaPermission\ForgetCachedPermissions::class,
    ],

app/Http/Kernel.php

// ...
 protected $middleware = [
        \Laravel\Nova\Http\Middleware\HandleInertiaRequests::class,
        \Illuminate\Http\Middleware\HandleCors::class,
        \App\Http\Middleware\TrustProxies::class,
        \App\Http\Middleware\CheckForMaintenanceMode::class,
        \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
        \App\Http\Middleware\TrimStrings::class,
        \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
    ];

/package.json

// ...
"devDependencies": {
        "axios": "^0.27.2",
        "cross-env": "^7.0.3",
        "laravel-mix": "^6.0.49",
        "lodash": "^4.17.13",
        "postcss": "^8.3.11",
        "resolve-url-loader": "^5.0.0",
        "sass": "^1.54.9",
        "sass-loader": "^12.6.0",
        "vue": "^3.2.39",
        "vue-loader": "^16.8.3",
        "vue-template-compiler": "^2.6.11",
        "vuex": "^4.0.2",
        ....
    },

目前完全没有头绪,是否遗漏了确保Nova JSON响应不被误判的配置步骤或中间件调整?还有哪些排查方向能解决这个问题?

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 06:57:36