【问题标题】:Adding only ES2015 module support to Node仅向 Node 添加 ES2015 模块支持
【发布时间】:2016-09-07 22:51:59
【问题描述】:

我正在尝试向 Node 添加 ES6 中存在的导入/导出功能。

我知道 Babel 可用于获得所有 ES6 功能,但我想看看是否有一种方法可以使用 Babel 仅添加导入/导出功能,如果可以,如何?

【问题讨论】:

    标签: ecmascript-6 babeljs


    【解决方案1】:

    是的,您可以使用transform-es2015-modules-commonjs 插件。

    此插件将 ES2015 模块转换为 CommonJS。

    安装它:

    npm install babel-plugin-transform-es2015-modules-commonjs --save
    

    在你的.babelrc声明它:

    {
      "plugins": [
        "transform-es2015-modules-commonjs"
      ]
    }
    

    如果您发现自己需要 require 使用 ES2015 模块语法声明其导出的模块的默认导出,则必须执行以下操作:

    var defaultExport = require('./es2015-module').default
    

    为避免这种情况,请安装babel-plugin-add-module-exports 插件,并更新您的.babelrc

    npm install babel-plugin-add-module-exports --save
    
    {
      "plugins": [
        "add-module-exports",
        "transform-es2015-modules-commonjs"
      ]
    }
    

    ______

    要在您的应用程序中使用此 Babel 配置,请使用 babel-register require hook

    在你应用的入口文件中,例如:

    // index.js
    require('babel-register')
    require('./app.js')
    

    然后开始使用 ES2015 模块语法:

    // app.js
    import something from './something'
    

    【讨论】:

    • 我是像往常一样运行节点(node app.js)还是以其他方式运行?
    • 你会使用babel-register
    • 就像在 babel-register filename.js 中一样?
    • @OmryRozenfeld 否 - 阅读 babel-register 要求挂钩的文档。 :-)
    • add-module-exports 要求将自身放在 transform-es2015-modules-umd, github.com/59naga/babel-plugin-add-module-exports 之前。 .babelrc 里面做了相反的事情是有原因的吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多