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

如何让create-vue像VueCLI一样正常解析JSX

解决create-vue项目中.vue文件无法解析JSX的问题

问题原因

create-vue基于Vite构建,默认情况下@vitejs/plugin-vue只处理.vue文件中的常规Vue语法,而@vitejs/plugin-vue-jsx仅负责解析.jsx/.tsx文件,不会主动处理.vue文件内的JSX代码,这就是你遇到Unexpected token '<'语法错误的原因。而VueCLI的vue-loader默认集成了JSX解析能力,所以之前能正常运行。

解决方案

方案一:修改.vue文件的script标签类型

在包含JSX的.vue文件中,将script标签的lang属性设置为jsx(使用TypeScript则设为tsx):

<script lang="jsx">
export default {
  setup() {
    const x = <div>Hi all</div>;
    return () => x;
  }
}
</script>

这样Vite会自动调用vueJsx插件解析该script标签内的JSX代码。

方案二:配置@vitejs/plugin-vue全局支持.vue文件中的JSX

如果不想逐个修改文件的script标签,可以在vite.config.js中给vue插件添加配置,让它解析.vue文件的script时启用JSX语法支持:

针对JavaScript项目:

import { fileURLToPath, URL } from "node:url";
import { defineConfig } from "vite";
import vue from "@vitejs/plugin-vue";
import vueJsx from "@vitejs/plugin-vue-jsx";

export default defineConfig({
  plugins: [
    vue({
      script: {
        parserPlugins: ['jsx'] // 启用JSX解析插件
      }
    }),
    vueJsx()
  ],
  resolve: {
    alias: {
      "@": fileURLToPath(new URL("./src", import.meta.url)),
    },
  },
});

针对TypeScript项目:

import { fileURLToPath, URL } from "node:url";
import { defineConfig } from "vite";
import vue from "@vitejs/plugin-vue";
import vueJsx from "@vitejs/plugin-vue-jsx";

export default defineConfig({
  plugins: [
    vue({
      script: {
        parserPlugins: ['jsx', 'typescript'] // 同时启用JSX和TypeScript解析
      }
    }),
    vueJsx()
  ],
  resolve: {
    alias: {
      "@": fileURLToPath(new URL("./src", import.meta.url)),
    },
  },
});

配置完成后重启Vite服务,.vue文件中的JSX就能正常被解析了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 12:12:24