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

Laravel8搭配Vue3出现Cannot read properties of undefined (reading 'component')报错如何解决

问题原因

该报错是因为你使用了Vue 2的初始化语法编写Vue 3的逻辑,Vue 3移除了原有的全局Vue构造函数,所以require('vue').default无法拿到带有component方法的全局Vue对象,才会抛出属性读取失败的错误。

解决步骤

1. 修改app.js代码

替换原有Vue 2风格的初始化代码,改为Vue 3支持的写法:

// 导入Vue3提供的创建应用方法
const { createApp } = require('vue');
// 导入自定义组件
const HelloComponent = require('./hello.vue').default;

// 创建应用实例
const app = createApp({});
// 注册全局组件
app.component('hello', HelloComponent);
// 挂载到页面节点
app.mount('#app');

如果你更偏好ESModule的导入写法,也可以用如下代码:

import { createApp } from 'vue'
import Hello from './hello.vue'

createApp({})
  .component('hello', Hello)
  .mount('#app')

2. 检查Laravel Mix配置

打开项目根目录的webpack.mix.js,确保已经启用Vue3编译支持:

mix.js('resources/js/app.js', 'public/js')
  // 必须添加这行,开启Vue3单文件组件的编译能力
  .vue()
  .postCss('resources/css/app.css', 'public/css', []);

3. 重新编译资源

执行如下命令重新安装依赖并编译前端资源:

npm install
npm run dev

编译完成后刷新页面即可正常渲染组件。

补充说明

Vue 3对全局API做了较大调整,原有Vue 2的new Vue()、Vue.component、Vue.use等全局调用方式全部废弃,所有全局配置都需要在createApp返回的应用实例上调用对应方法完成。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 22:45:03