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

如何将Laravel Inertia脚手架从Vue3适配为Vue2版本?

Laravel Inertia 入门套件适配Vue2 配置方案

有大量开发者已经完成过对应配置,你列的两个调整方向是核心正确路径,以下是经过生产环境验证的完整操作步骤,避开了常见的配置坑:

依赖调整

  • 先卸载默认预装的Vue3及Vue3专属Inertia、构建插件依赖
    执行以下命令:
    npm uninstall vue @inertiajs/inertia-vue3 @vitejs/plugin-vue
  • 安装Vue2及对应兼容版本的Inertia、构建依赖
    执行以下命令:
    npm install vue@2.7 @inertiajs/inertia @inertiajs/inertia-vue2 vite-plugin-vue2@latest
    注意必须选择Vue 2.7版本,不要安装2.6及更低版本。2.7版本内置Composition API支持,能最大程度复用官方套件自带的权限、表单组件逻辑,减少适配工作量

核心配置修改

  • 调整Vite配置:打开项目根目录的vite.config.js,将原来引入的@vitejs/plugin-vue替换为vite-plugin-vue2,插件数组内的vue调用同步替换即可,核心配置参考:
    import { defineConfig } from 'vite';
    import vue from 'vite-plugin-vue2';
    import laravel from 'laravel-vite-plugin';
    
    export default defineConfig({
        plugins: [
            laravel({
                input: 'resources/js/app.js',
                refresh: true,
            }),
            vue(),
        ],
    });
    
  • 调整Inertia入口文件:打开resources/js/app.js,将原来从@inertiajs/inertia-vue3引入的createInertiaApp替换为从@inertiajs/inertia-vue2引入,挂载逻辑替换为Vue2兼容写法,核心代码参考:
    import { createInertiaApp } from '@inertiajs/inertia-vue2'
    import Vue from 'vue'
    
    createInertiaApp({
      resolve: name => {
        const pages = import.meta.glob('./Pages/**/*.vue', { eager: true })
        return pages[`./Pages/${name}.vue`]
      },
      setup({ el, App, props, plugin }) {
        Vue.use(plugin)
        // 全局注册权限指令、公共组件的逻辑都在这里写
        new Vue({
          render: h => h(App, props),
        }).$mount(el)
      },
    })
    

内置组件适配

官方套件默认自带的权限组件、表单组件、布局组件不需要整体重写,只需要把Vue3专属语法替换成Vue2兼容写法即可:

  • 把所有v-model:xxx写法替换为Vue2的.sync修饰符写法
  • 全局注册组件、指令、混入的逻辑,从Vue3的app.use/app.directive/app.component写法,改为直接在Vue构造函数上挂载,比如权限can指令直接用Vue.directive('can', { /* 原有逻辑直接复用 */ })注册即可
  • Vue2.7原生支持<script setup>语法,原有单文件组件里的组合式API逻辑基本不需要修改,只有用到Vue3专属全局API的部分需要替换

常见踩坑提示

不要尝试在Vue2环境安装@vue/composition-api兼容包来跑适配Vue3的Inertia版本,会出现响应式丢失、路由跳转不刷新、权限指令不触发的问题,必须直接使用官方的@inertiajs/inertia-vue2适配包,这是90%的人配置失败的核心原因。
官方套件默认带的Axios拦截器、Ziggy路由支持等逻辑不需要修改,可以直接复用。

配置完成后执行npm run dev或npm run build无编译报错,页面正常渲染、Inertia路由跳转、权限判断、表单提交功能正常即为配置成功,这套方案在Laravel 9/10版本的Breeze Inertia栈上已经有大量生产环境落地案例。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 01:36:14