Laravel 10 + Vite 9执行npm run build报错及路径读取问题求助
解决方案
1. 修复glob异步读取导致的空数组问题
原代码中glob使用异步回调方式,当defineConfig执行时,paths数组还未被填充,导致Vite 9因输入为空触发严格校验报错。改成同步读取即可解决:
修改vite.config.js:
import { defineConfig } from 'vite'; import laravel from 'laravel-vite-plugin'; import glob from 'glob' // 用glob.sync同步读取文件,确保paths在配置导出前已获取到值 const paths = glob.sync('Modules/*/Resources/assets/js/**/*.js'); const publicPath = 'public/build' export default defineConfig({ plugins: [ laravel({ input: paths, refresh: true, }), ], build: { outDir: publicPath } });
2. 验证路径匹配有效性
如果同步读取后仍未获取到文件,检查以下内容:
- 确认
Modules目录在项目根目录下,路径无拼写错误 - 确认
**/*.js通配符能覆盖目标文件的嵌套层级 - 可临时添加打印语句验证匹配结果:
const paths = glob.sync('Modules/*/Resources/assets/js/**/*.js'); console.log('匹配到的文件:', paths); // 执行构建前会在终端输出结果
3. Vite版本兼容说明
Vite 9对配置的校验逻辑更严谨,Vite 8允许的空输入场景在Vite 9中被明确禁止。修复空输入问题后,Vite 9即可正常构建;若无需Vite 9新特性,也可锁定Vite 8版本:
修改package.json后执行npm install:
{ "devDependencies": { "vite": "^8.0.0" } }
4. Blade模板指令注意事项
确保@vite('Modules/Base/Resources/assets/js/base/base.js')引用的路径确实存在于paths数组中,否则Vite无法正确处理该资源。
内容的提问来源于stack exchange,提问作者RedOne
相关产品推荐
相关产品推荐

