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(仅客户端触发)。
- 若使用这类API,需通过
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
相关产品推荐
相关产品推荐

