从Laravel Mix迁移至Laravel Vite报错:找不到laravel-vite-plugin
Laravel Mix迁移到Vite时「Cannot find module 'laravel-vite-plugin'」及相关问题解决
核心错误解决:安装缺失的Vite依赖
报错明确提示找不到laravel-vite-plugin,是因为你删除Laravel Mix相关依赖后,未安装Vite及Laravel官方适配插件。在Laravel Sail环境下,直接执行容器内的npm命令完成安装:
sail npm install laravel-vite-plugin vite @vitejs/plugin-vue --save-dev
务必用sail npm而非本地npm执行,确保依赖安装在Docker容器对应的环境中,避免WSL2/宿主机环境不一致引发的问题。
修正vite.config.js中的无效资源路径
你的项目不存在resources/css/app.css文件,但vite.config.js的laravel插件配置里仍包含该路径,会导致Vite启动时找不到资源。修改配置,移除不存在的文件:
import { defineConfig } from 'vite'; import laravel from 'laravel-vite-plugin'; import vue from '@vitejs/plugin-vue'; export default defineConfig({ plugins: [ laravel([ 'resources/js/app.js', // 移除'app.css' ]), vue({ template: { transformAssetUrls: { base: null, includeAbsolute: false, }, }, }), ], resolve: { alias: { '@': '/resources/js' } } });
后续若需全局CSS,再创建resources/css/app.css并重新加入配置即可。
修复app.js中的ES模块兼容问题
Vite默认只支持ES模块语法,你当前的app.js混合了CommonJS的require语法,需全部改为ES模块导入:
替换组件导入方式:
原代码:app.component('login-header', require('./components/login-header').default);改为:
import LoginHeader from './components/login-header'; app.component('login-header', LoginHeader);所有组件(如
fill-email、side-bar等)都要按此方式修改。移除重复导入:
代码末尾重复导入了lodash和axios,直接删除这两行:import lodash from 'lodash'; import axios from 'axios';修正动态导入语法:
原代码import('./functions').functions(app);写法错误,假设你的functions.js导出一个接收app实例的函数,调整为:// 若functions.js导出默认函数:export default function setup(app) { ... } import functions from './functions'; functions(app); // 或用动态导入(需懒加载时): (async () => { const { default: functions } = await import('./functions'); functions(app); })();
适配WSL2/Docker环境的额外提示
- 确保Laravel项目目录放在WSL2的文件系统中(如
/home/你的用户名/项目名),不要放在Windows挂载目录(如/mnt/c/...),避免文件同步延迟导致依赖安装异常或Vite热更新失效。 - 所有npm命令均通过
sail npm执行,保证容器内的依赖和运行环境一致。
内容的提问来源于stack exchange,提问作者Vincenzo
相关产品推荐
相关产品推荐

