Laravel 11 Mix中Alpine重复加载,转Vite遇jQuery/Bootstrap问题求助
解决Laravel 11 Mix下Alpine重复加载的问题
核心原因
你遇到的Detected multiple instances of Alpine running错误,本质是Alpine被重复加载,大概率是以下两个来源的冲突:
- 你在
app.js中手动引入并初始化了Alpine - Laravel 11默认集成的Livewire自带了Alpine实例
另外,你的Webpack配置同时编译两个独立JS文件,若页面同时引入也可能间接触发重复,但从代码来看核心冲突点还是前者。
具体解决办法
办法1:保留手动引入的Alpine,禁用Livewire自带版本
修改config/livewire.php配置文件,关闭Livewire自动加载Alpine的功能:
return [ // 其他配置项... 'alpine' => [ 'version' => '3.8.1', // 匹配你package.json里的Alpine版本 'cdn' => false, 'import' => false, ], ];
修改后执行php artisan config:clear清除配置缓存,确保生效。
办法2:移除手动引入的Alpine,使用Livewire自带版本
直接删掉app.js里关于Alpine的代码:
// 从app.js中删除以下三行 // import Alpine from 'alpinejs'; // window.Alpine = Alpine; // Alpine.start();
这样就完全依赖Livewire自带的Alpine实例,避免重复初始化。
办法3:合并JS编译文件,减少冗余
你的webpack.mix.js同时编译app.js和bootstrap.js成两个独立文件,建议合并成一个,降低依赖冲突概率:
- 在
app.js顶部引入bootstrap.js:
// app.js 开头添加 require('./bootstrap'); // 原app.js代码 import Alpine from 'alpinejs'; window.Alpine = Alpine; Alpine.start(); require('./sb-admin-2');
- 修改
webpack.mix.js,移除单独编译bootstrap.js的配置:
const mix = require('laravel-mix'); require('laravel-mix-purgecss'); mix.webpackConfig({ stats: { children: true } }); mix.js("resources/js/app.js", "public/js") .sass("resources/sass/app.scss", "public/css") .purgeCss();
额外排查点
- 查看页面源码,确认是否有两个Alpine相关的脚本加载(比如一个是编译后的app.js,一个是Livewire注入的CDN脚本)
- 检查
sb-admin-2是否内部引入了Alpine,如果有,需要同步调整(比如删除其中的Alpine代码,或者通过Webpack externals排除重复引入)
内容的提问来源于stack exchange,提问作者Rémi Tardif
相关产品推荐
相关产品推荐

