javascript 如何使用vite启用“@babel/plugin-proposal-decorators”

iklwldmw  于 12个月前  发布在  Java
关注(0)|答案(7)|浏览(328)
> src/App.jsx:22:0: error: Unexpected "@"
    22 │ @observer

error when starting dev server:
Error: Build failed with 1 error:
src/App.jsx:22:0: error: Unexpected "@"

字符串
我使用观察者作为装饰器,然后我得到了错误。在文档中找不到启用此选项的地方。

mwngjboj

mwngjboj1#

Vite的react插件已经支持这个功能。请在https://github.com/vitejs/vite-plugin-react/tree/main/packages/plugin-react#proposed-syntax查看文档。您不需要安装任何新的软件包。以下配置应该可以工作,

import { defineConfig } from 'vite';
import reactSupport from '@vitejs/plugin-react';

// https://vitejs.dev/config/
export default defineConfig({
  plugins: [reactSupport({
    babel: {
      parserOpts: {
        plugins: ['decorators-legacy', 'classProperties']
      }
    }
  })],
  server: {
    port: 3000
  }
});

字符串

lnvxswe2

lnvxswe22#

我做了一个名为vite-plugin-babel-dev的软件包,如果你不需要完整的react插件,它可以在Vite的开发部分运行babel。
安装@babel/plugin-proposal-decorators并像这样使用它:

import { defineConfig } from 'vite';
import babelDev from 'vite-plugin-babel-dev';

export default defineConfig({
    plugins: [
        babelDev({
            babelConfig: {
                plugin: ['@babel/plugin-proposal-decorators']
            }
        }),
        // ...
    ],

    // ...
})

字符串
编辑:该软件包现在称为vite-plugin-babel

polkgigr

polkgigr3#

不确定你是否在使用react,但你可以通过这里描述的react插件https://www.npmjs.com/package/@vitejs/plugin-react添加babel插件。
建议的安装程序似乎要求您将文件重命名为.ts / .tsx。然而,以下内容允许我保留.js / .jsx扩展名。

import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'

// https://vitejs.dev/config/
// https://www.npmjs.com/package/@vitejs/plugin-react
export default defineConfig({
    plugins: [
        react({
            babel: {
                plugins: [
                    ["@babel/plugin-proposal-decorators", { legacy: true }],
                    [
                        "@babel/plugin-proposal-class-properties",
                        { loose: true },
                    ],
                ],
            },
        }),
    ],
});

字符串

uklbhaso

uklbhaso4#

import {defineConfig} from "vite"
import vue from '@vitejs/plugin-vue'
import { createHtmlPlugin } from 'vite-plugin-html';
import vueJsx from '@vitejs/plugin-vue-jsx';

export default defineConfig({
  build: {
    outDir: 'dist/'
  },
  plugins: [
    vue(),
    vueJsx(
      {babelPlugins: [[
        "@babel/plugin-proposal-decorators",
        { legacy: true },
      ]]}
    )
  ],
})

字符串

gkl3eglg

gkl3eglg5#

这是一个轻微的变化,但如果你使用Vite和Preact,以及@preact/preset-vite,那么你需要这样做:

  1. npm install --save-dev @babel/plugin-proposal-decorators
    1.在vite.config.ts中,添加以下内容:
plugins: [
    preact({
      babel: {
        plugins: [
          ["@babel/plugin-proposal-decorators", { version: "2023-05" }],
        ],
      },
    }),
  ],

字符串
您可能不需要设置显式版本,但在我的情况下,必须启用此错误:The decorators plugin requires a 'decoratorsBeforeExport' option

uqzxnwby

uqzxnwby6#

tsDecorators参数添加到vite.config.ts中的React插件列表:

import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react-swc'

export default defineConfig({
  plugins: [react({ tsDecorators: true })],
})

字符串

pw9qyyiw

pw9qyyiw7#

不,你不能。必须等待此问题解决:https://github.com/vitejs/vite/issues/2238

相关问题