You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 13:18:05