breeze 不是装完 composer require laravel/breeze --dev 就能用的,必须执行 php artisan breeze:install 才生成路由、视图和控制器;跳过这步,/login 一定 404。

直接上结论:Breeze 不是装完 composer require laravel/breeze --dev 就能用的,必须执行 php artisan breeze:install 才生成路由、视图和控制器;跳过这步,/login 一定 404。
为什么 composer require 后还必须跑 breeze:install
Breeze 的 Composer 包只注册 Artisan 命令、提供底层逻辑,不主动写任何文件到你的项目里。这是 Laravel 官方的显式控制设计——避免污染已有结构。
-
composer require laravel/breeze --dev只把包放进vendor/,php artisan route:list里看不到任何 auth 路由 -
php artisan breeze:install才真正:复制resources/views/auth/视图、注入routes/auth.php、修改RouteServiceProvider、发布 Tailwind 配置、写入app/Http/Controllers/Auth/ - 如果你已手动写过
Auth::routes()(比如从 Laravel UI 迁移过来),它会和 Breeze 的routes/auth.php冲突,导致部分路由失效或重复定义
php artisan breeze:install 参数选错的后果
参数决定生成什么、依赖什么、要不要编译,选错不是“重装就行”,而是立刻卡在构建或运行环节。
-
php artisan breeze:install blade:最轻量,纯 SSR,表单 POST 提交,无需npm run dev也能访问/login -
php artisan breeze:install vue或react:强制引入 Inertia、Ziggy、@inertiajs/*,必须npm install && npm run dev,否则页面空白 + 控制台报Uncaught ReferenceError: inertia is not defined -
php artisan breeze:install --dark:只改 CSS 类和 JS 切换逻辑,但前提是你的tailwind.config.js已启用darkMode: 'class',否则深色样式不生效
迁移失败的三个高频原因
php artisan migrate 报错,90% 不是 Breeze 问题,而是环境或结构没对齐。
- PostgreSQL 用户注意:
$table->string('email')->unique()在 PG 中会触发index row size exceeds maximum,必须改成$table->string('email', 255)->unique() - 已有
users表且字段不全(比如缺email_verified_at):Breeze 的迁移会重复添加字段,直接报 SQL 错误;开发环境建议删表重迁,或手动编辑迁移文件 -
.env里DB_PASSWORD是空字符串?MySQL 8.0+ 默认禁用空密码,连不上就会报SQLSTATE[HY000] [1045] Access denied
登录后跳转不到预期页面?先查 RouteServiceProvider::HOME
登录成功默认跳 /dashboard,这个路径由 RouteServiceProvider::HOME 常量控制,不是硬编码在中间件里。
- 想改成首页?改
app/Providers/RouteServiceProvider.php里的const HOME = '/'; - 改完别忘了同步更新
resources/views/layouts/app.blade.php里导航栏的href="{{ route('dashboard') }}",否则菜单点开会 404 - 如果用了自定义路由名(比如
Route::get('/profile', ...)->name('user.profile')),route()辅助函数必须匹配新名字,不能只改常量
最容易被忽略的是:Breeze 不自动启用邮箱验证流程,哪怕你配置了 MAIL_MAILER,RegisterController 也不会发验证邮件——得手动在 RegisterRequest 或 RegisteredUserController 里加逻辑,否则 email_verified_at 字段永远为 null。











