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

Laravel8+Inertia.js+Vue3+TS项目App变量类型错误与构建错误求助

问题1:app.ts中App变量TS类型报错修复

报错原因是你使用的@inertiajs/inertia-vue3@0.5.2版本中,createInertiaApp的setup回调参数导出的组件是小写命名app,和你写的大写App不匹配。
两种修复方案二选一:

  • 直接修改resources/js/app.ts的setup参数命名:
import { createApp, h } from 'vue'
import { createInertiaApp } from '@inertiajs/inertia-vue3'

createInertiaApp({
  // 建议把require改成动态import,适配TS和ES模块规范
  resolve: async name => (await import(`./Pages/${name}`)).default,
  // 把App改成小写app
  setup({ el, app, props, plugin }) {
    createApp({ render: () => h(app, props) })
      .use(plugin)
      .mount(el)
  },
})
  • 升级Inertia相关依赖到最新稳定版,新版已经统一使用大写App作为参数名。
问题2:sail npm run watch构建语法错误修复

报错原因是Babel默认没有配置处理TS类型注解,Vue模板编译出来的带类型标注的render函数被当成普通JS解析,导致语法识别失败。
按顺序执行以下操作:

  1. 修改webpack.mix.js配置,将入口处理方法从mix.js改为mix.ts,适配TypeScript项目:
const mix = require('laravel-mix');

mix.ts('resources/js/app.ts', 'public/js')
.vue({
    version: 3
})
.postCss('resources/css/app.css', 'public/css', [
    //
]);
  1. 安装TS对应的Babel预设:
sail npm install @babel/preset-typescript --save-dev
  1. 在项目根目录新建.babelrc配置文件,内容如下:
{
    "presets": [
        "@babel/preset-env",
        "@babel/preset-typescript"
    ]
}
  1. 清空node_modules和lock文件后重新安装依赖,再执行构建命令即可:
rm -rf node_modules package-lock.json
sail npm install
sail npm run watch

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 12:24:03