【问题标题】:How to make "export default" work in a Babel plugin file?如何使“导出默认值”在 Babel 插件文件中工作?
【发布时间】:2018-09-18 22:03:15
【问题描述】:

我直接从文档 (https://babeljs.io/docs/en/plugins#plugin-development) 中获取了这个插件示例

export default function() {
  return {
    visitor: {
      Identifier(path) {
        const name = path.node.name;
        // reverse the name: JavaScript -> tpircSavaJ
        path.node.name = name.split("").reverse().join("");
      }
    }
  };
}

我的babel.config.js 文件是这样的:

module.exports = {
    plugins: [
        'transform-es2015-modules-commonjs',
        './babelPlugin.js',
    ],
    presets: [
        '@babel/env'
    ]
} ;

我使用命令 babel testInput.js -o testOutput.js 运行 Babel

但我收到此错误:

D:\Projects\Babel plugin test\babelPlugin.js:1
(function (exports, require, module, __filename, __dirname) {   export default function() {
                                                                ^^^^^^
SyntaxError: Unexpected token export

如果我使用module.exports = 而不是export default,则一切正常。

为什么export default 会导致语法错误?

【问题讨论】:

  • 问题是你的 babel 的配置,因为这个语法很好用。

标签: node.js babeljs


【解决方案1】:

Babel 将编译 testInput.js,因为这就是 babel testInput.js -o testOutput.js 所说的,但您的配置中的任何内容都不会编译 babelPlugin.js。如果你想用 ES6 模块语法编写它,你需要先单独编译插件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-15
    • 1970-01-01
    • 2017-06-09
    • 1970-01-01
    • 1970-01-01
    • 2017-10-05
    • 2015-11-12
    相关资源
    最近更新 更多