【问题标题】:Babel command line not transpiling import statements - ReactBabel 命令行不转换导入语句 - React
【发布时间】:2019-01-11 02:05:41
【问题描述】:

我有以下 JSX 文件。

import React from "react";

export default class Code extends React.Component {
    render() {
        return <div></div>
    }
}

React.render(<Code />, document.getElementById('code'));

我正在使用以下命令从命令行运行 Babel

babel --plugins transform-react-jsx app.jsx -d dist

我得到以下输出

import React from "react";
export default class Code extends React.Component {
  render() {
    return React.createElement("div", null);
  }

}
React.render(React.createElement(Code, null), document.getElementById('code'));

这显然不会在浏览器中运行,因为导入和导出无效。我需要为 Babel 指定哪些设置才能从 es6 导入转换?

这是我的 .babelrc 文件

{
    "plugins": [
        [
            "transform-react-jsx",
            {
                "pragma": "dom" // default pragma is React.createElement
            },
        ]
    ]
}

谢谢

【问题讨论】:

    标签: reactjs ecmascript-6 babeljs


    【解决方案1】:

    如何使用preset-react 代替,它还将包含transform-react-jsx 插件。

    1. 安装预设模块npm install --save-dev @babel/preset-react
    2. 将预设添加到您的.babelrc 文件中,即

      { “预设”:[“@babel/preset-react”] }

    3. 运行你的 babel 脚本babel app.jsx -d dist

    如果您不想添加.babelrc 文件,只需在安装预设模块babel --presets @babel/preset-react app.jsx -d dist 后运行脚本即可

    关于preset-reacthere的更多信息

    【讨论】:

    • 谢谢范,我试过了。仍然得到相同的输出。导入和类完好无损。我尝试添加@babel/preset-env,这也有助于转换类和导入。但是当我在浏览器中运行该应用程序时,我在控制台中收到一条错误消息,提示“未定义要求”
    • @Arun hmm ic,让我试试
    • @Arun 我可以知道您使用哪个浏览器来运行该应用程序吗?添加@babel/preset-env 会将代码(即import 转换为require)用于节点而不是浏览器。建议使用 webpack 之类的捆绑器将您的源代码捆绑到可从浏览器访问的资源中。也许使用 create-react-app 创建 react 应用程序会更容易,并且可以节省大量尝试配置 webpack 配置的时间。
    猜你喜欢
    • 2016-03-19
    • 1970-01-01
    • 2016-02-26
    • 2018-04-29
    • 2016-02-06
    • 1970-01-01
    • 2016-11-11
    • 2016-12-11
    • 1970-01-01
    相关资源
    最近更新 更多