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

基于DDEV的Laravel+Inertia项目构建生产资源时Vue模块解析错误

解决方案

1. 修复"Failed to resolve module specifier 'vue'"错误

这个错误是Vite生产构建时无法正确解析Vue模块路径导致的,结合你的配置可尝试以下调整:

  • 修正Vue别名的绝对路径:
    将resolve.alias中的Vue别名改为绝对路径,消除模块解析歧义:

    resolve: {
      alias: {
        '~bootstrap': path.resolve(__dirname, 'node_modules/bootstrap'),
        vue: path.resolve(__dirname, 'node_modules/vue/dist/vue.esm-bundler.js')
      }
    },
    
  • 检查Rollup输出配置兼容性:
    你的输出配置移除了哈希值本身没问题,但如果问题持续,可暂时恢复默认哈希命名测试是否兼容:

    entryFileNames: 'js/[name].[hash].js',
    assetFileNames: (css) => {
      if (css.name.split('.').pop() == 'css') {
        return 'css/[name].[hash].css';
      } else {
        return 'icons/[name].[hash][extname]';
      }
    },
    
  • 验证依赖版本适配:
    确保vue、@vitejs/plugin-vue和laravel-vite-plugin版本相互匹配,比如Laravel 10+建议搭配laravel-vite-plugin ^0.7.0及以上,Vue 3对应@vitejs/plugin-vue ^4.0.0及以上。

  • 确认app.js的Vue导入格式:
    确保resources/js/app.js中Vue导入为标准写法:

    import { createApp } from 'vue';
    import { createInertiaApp } from '@inertiajs/vue3';
    

2. 关于manifest.json必须以字符串配置才能生成的问题

Vite默认build.manifest: true会在outDir生成manifest.json,但Laravel Vite插件可能覆盖了这一默认逻辑。

当你设置manifest: 'manifest.json'时,相当于强制Vite生成指定文件名的清单文件,绕过了插件的默认处理,这就是字符串配置生效的原因。你可以继续保持这个配置,也可以尝试更新laravel-vite-plugin到最新版本,看是否修复了manifest: true不生效的问题。


内容的提问来源于stack exchange,提问作者Mateo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 12:03:26