触发wire:poll时出现livewire/update 404错误求助
Livewire wire:poll 触发404错误的解决思路
问题背景
使用Laravel Framework 11.25.0 + Livewire v3.5.6,触发wire:poll时JS控制台出现404错误:
livewire.js?id=38dc8241:4284 POST http://localhost:8000/livewire/update 404 (Not Found)
除首次渲染外,组件的render函数不再被调用。已简化至最简组件代码(视图仅含<div wire:poll>A</div>,控制器仅保留基础mount和render逻辑),问题仍存在。
已确认:
php artisan route:list能看到livewire/update的POST路由- 页面已正确引入Livewire脚本,且脚本包含
data-update-uri="/livewire/update" - 直接访问
/livewire/update返回“该路由不支持GET方法,仅支持POST”,符合预期
解决步骤
1. 重新发布Livewire资源并清除路由缓存
执行以下命令确保Livewire的配置、路由和静态资源正确:
php artisan livewire:publish --config php artisan livewire:publish --assets php artisan route:clear
2. 验证CSRF令牌一致性
检查页面中meta标签的CSRF令牌与Livewire脚本的data-csrf值是否匹配:
- 在浏览器控制台执行:
document.querySelector('meta[name="csrf-token"]').content - 对比Livewire脚本标签中的
data-csrf属性值
若不匹配,清除视图缓存:
php artisan view:clear
3. 确认APP_URL配置
检查.env文件中的APP_URL是否设置为当前应用的正确地址:
APP_URL=http://localhost:8000
配置错误会导致Livewire生成的请求路径异常。
4. 排查中间件干扰
- 暂时禁用自定义全局中间件,测试
wire:poll是否正常工作 - 检查
RouteServiceProvider是否对Livewire路由添加了额外前缀或限制
5. 清除所有缓存
执行完整的缓存清除命令,排除缓存导致的异常:
php artisan cache:clear php artisan config:clear php artisan route:clear php artisan view:clear
6. 简化组件初始化逻辑
暂时注释mount方法中的日志代码,或移除mount方法,测试组件是否能正常触发render:
class TweetTable extends Component { // public function mount($campaign) // { // Log::info(__CLASS__ . ":" . __FUNCTION__ . " idCampaign = " . $campaign->id); // } public function render() { Log::info(__CLASS__ . ":" . __FUNCTION__); return view('livewire.tweet-table'); } }
内容的提问来源于stack exchange,提问作者Jean François Manatane
相关产品推荐
相关产品推荐

