汇总+ React无法编译JSX

Bra*_*ods 5 rollup jsx reactjs

我正在尝试使用Rollup + React,但是在汇总遇到JSX时遇到一个错误。

Unexpected token... export default () => <p>M...
Run Code Online (Sandbox Code Playgroud)

我有一个仓库触发该错误。我使用Rollup + React找到的所有文档/示例均未使用最新的Babel,因此可能与Babel有关。

rollup.config.js:

import resolve from 'rollup-plugin-node-resolve';
import commonjs from 'rollup-plugin-commonjs';
import babel from 'rollup-plugin-babel';
import pkg from './package.json';

export default [{
        input: 'src/index.js',
        output: {
        name: 'index',
        file: pkg.main,
        format: 'umd'
    },
    plugins: [
        resolve(),
        commonjs(),
        babel({ 
            exclude: 'node_modules/**',
            presets: ['@babel/env', '@babel/preset-react']
        })
    ],
    external: [
        'react',
        'prop-types',
    ],
    globals: {
        react: "React"
    }
},
];
Run Code Online (Sandbox Code Playgroud)

.babelrc:

{
  "presets": [
  ["@babel/env", { "modules": false }], "@babel/preset-react"]
}
Run Code Online (Sandbox Code Playgroud)

Bra*_*ods 10

解决这个问题的方法是两个交换两个插件的顺序

从:

plugins: [
    resolve(),
    commonjs(),
    babel({ 
        exclude: 'node_modules/**',
        presets: ['@babel/env', '@babel/preset-react']
    })
],
Run Code Online (Sandbox Code Playgroud)

到:

plugins: [
    resolve(),
    babel({ 
        exclude: 'node_modules/**',
        presets: ['@babel/env', '@babel/preset-react']
    }),
    commonjs()
],
Run Code Online (Sandbox Code Playgroud)

谢谢vladshcherbin

  • 来自 npm 站点: https://www.npmjs.com/package/@rollup/plugin-babel 与 `@rollup/plugin-commonjs` 一起使用 当将 `@rollup/plugin-babel` 与 `@rollup/plugin- 一起使用时commonjs` 在同一个 Rollup 配置中,需要注意的是,在插件数组中,必须将 `@rollup/plugin-commonjs` 放置在该插件之前,以便两者正常协同工作 (4认同)