- Add ZiggyVue plugin to app.js setup (fixes 'route is not a function' in all Vue template usages) - Add ziggy-js as production dependency (was missing) - Add CSRF meta tag to app.blade.php - Add date formatting helpers to Services/Index.vue - Name api.songs resource route to avoid Ziggy collision - Increase Playwright timeout to 90s for CI stability - Reduce sync test polling from 325 to 50 attempts
23 lines
902 B
Markdown
23 lines
902 B
Markdown
## [2026-03-01] Task 5: ZiggyVue Plugin Missing
|
|
|
|
**Severity**: HIGH — Blocks all Vue component rendering that uses `route()`
|
|
**File**: `resources/js/app.js`
|
|
**Error**: `TypeError: o.route is not a function` on every page using `route()` in templates
|
|
|
|
**Root Cause**: `@routes` blade directive provides `window.route` global, but Vue 3 `<script setup>` templates resolve against component render proxy, not `window`. The `ZiggyVue` plugin that bridges this gap is NOT registered in `app.js`.
|
|
|
|
**Impact**: Login page button, navigation links, and any template using `route()` fail to render client-side.
|
|
|
|
**Fix Required**:
|
|
```js
|
|
// In resources/js/app.js
|
|
import { ZiggyVue } from 'ziggy-js';
|
|
|
|
createApp({ render: () => h(App, props) })
|
|
.use(plugin)
|
|
.use(ZiggyVue)
|
|
.mount(el);
|
|
```
|
|
|
|
**Workaround Applied**: Auth setup uses `page.request.post('/dev-login')` instead of clicking the UI button.
|