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

Laravel 10新项目中Inertia SSR无法工作的问题求助

解决Inertia SSR无法生成服务端渲染内容的问题

以下是针对该问题的排查与解决建议:

1. 确认Laravel的Inertia SSR配置

  • 检查config/inertia.php文件,确保SSR功能已启用:
    'ssr' => [
        'enabled' => true,
        'url' => env('INERTIA_SSR_URL', 'http://127.0.0.1:13714'),
    ],
    
  • 确认.env文件中INERTIA_SSR_URL与php artisan inertia:start-ssr启动的服务地址一致(默认端口为13714)。

2. 验证SSR服务运行状态

  • 启动php artisan inertia:start-ssr后,观察终端输出,确保无组件找不到、依赖缺失等报错信息。
  • 用curl http://127.0.0.1:13714测试SSR服务是否正常响应,若返回错误,根据提示修复问题。

3. 检查构建产物完整性

  • 执行npm run build后,确认public/build目录下存在SSR相关产物(如ssr.js或带哈希的SSR文件),若缺失,重新执行构建命令并查看终端是否有构建错误。

4. 排查页面组件的SSR兼容性

  • 服务端渲染无法执行浏览器专属API(如window、document),检查页面组件:
    • 若使用这类API,需通过process.client判断环境后再执行,示例:
      <script setup>
      if (process.client) {
          // 仅在客户端执行的DOM操作、window访问等逻辑
      }
      </script>
      
    • 避免在setup或created钩子中执行浏览器专属逻辑,可移至onMounted(仅客户端触发)。

5. 调整版本兼容性

  • 当前laravel-vite-plugin^1.0.0与Vite 5.x可能存在兼容问题,尝试升级至最新版本:
    npm install laravel-vite-plugin@latest --save-dev
    
  • 确保@inertiajs/vue3与vue版本匹配,可尝试更新Inertia至最新版:
    npm install @inertiajs/vue3@latest --save-dev
    

6. 额外验证步骤

  • 确保路由返回的是Inertia响应,示例:
    use Inertia\Inertia;
    
    Route::get('/', function () {
        return Inertia::render('Welcome');
    });
    
  • 刷新页面后查看源码,搜索是否存在data-page属性对应的HTML内容(服务端渲染的页面内容会直接出现在源码中)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 08:07:40