【问题标题】:Babel does not transpile with ES2015 but Stage0 presetBabel 不使用 ES2015 进行编译,而是使用 Stage0 预设
【发布时间】:2017-10-17 09:20:58
【问题描述】:

我在使用 babel 和 ES2015 预设转换以下代码(redux reducer)时遇到问题。我(错误地)假设这是可以转换的代码。

const todos = (state = [], action) => {
    switch (action.type) {
        case 'TOGGLE_TODO':
        return state.map(todo =>
            (todo.id === action.id)
                ? {
                ...todo,
                completed: !todo.completed
                }
                : todo
            )

        default:
        return state
    }
}

export default todos

错误信息

repl: Unexpected token (7:16)
   5 |             (todo.id === action.id)
   6 |                 ? {
>  7 |                 ...todo,

使用 Stage0 预设进行转换工作正常。我确实用Babel online 验证了这个行为。

【问题讨论】:

    标签: javascript babeljs


    【解决方案1】:

    因为preset-2016 不支持对象剩余传播。现在是第三阶段

    【讨论】:

    • 感谢您的回答。这确实是问题所在。我仍然想知道为什么我的同事能够使用 babel 默认预设来转换它,我需要明确设置它
    • 我认为他正在开发中使用它,但您正在尝试创建生产版本。是真的吗?
    • 不,我们都使用 babel src --out-file index.js --source-maps 和 6.26.0 版本来转译有问题的文件。由于使用 npm 链接和符号链接时 webpack 设置存在问题,我们这样做是为了在私有模块中在移动和 Web 应用程序之间共享代码。无论如何,再次感谢!
    【解决方案2】:

    您正在使用 object spread 运算符,它是第 3 阶段的一部分。

    【讨论】:

      猜你喜欢
      • 2018-03-06
      • 1970-01-01
      • 2019-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-01
      • 2016-05-03
      • 1970-01-01
      相关资源
      最近更新 更多