nodejs v5如何让我们使用ES6模块?

时间:2017-07-29 01:08:33

标签: javascript node.js babeljs transpiler

我正在编写一些在节点上运行的Javascript,并使用node_modules中的模块。其中一些恰好出现在ES6中。

不幸的是,我已经了解到我的JS将部署在节点v5上。所以我用快速babel src-dir --out-dir out-dir

将其转换为ES5

但是当然,当我在节点中运行代码时,只要依赖关系导致node_modules中的任何ES6文件,它就会barfs。

Node v6 +顺利运行,但我无法控制部署环境。

我应该如何解决这个问题 - 我是否应该考虑转换所有节点模块?这似乎很多工作。我错过了一些明显的东西吗?

.babelrc是这样的:

{
    "presets": [
        [ "es2015" ],
    ],
    "plugins": []
}

1 个答案:

答案 0 :(得分:1)

如果您依赖于在您的环境中无效的npm模块,我只能想到四种选择:

  1. 切换到在您自己的环境中工作且具有相同功能的模块。
  2. 通过修改模块以在目标环境中工作来修复相关模块
  3. 完全抛弃模块并自行编写必要的代码
  4. 在v6之前找到与node.js版本兼容的模块的早期版本(通过Github)。除非这是去年首次发布的内容,否则早期版本的node.js可能会使用早期版本。
  5. 修复可能涉及修复一两个错误,或者可能涉及将它们自己转换为ES5目标 - 具体取决于问题所在。

    可能有2)和3)的组合,你可以从模块中借用你真正需要的东西,并为节点v5修复它并将其添加到你的项目或在Github上分叉。 NPM模块通常是开源的,可以“自行修复”选项。

    注意:如果您在节点v5下显示了确切问题是什么运行的确切示例,我们可以更具体地帮助哪个选项最简单。但是,如果没有这样的细节,我们所能做的就是描述您可供选择的整体选项。

    哦,我会对云服务进行锤击,让他们真正地了解这一点。 5.x没有来自node.js基础的长期支持,从来没有。它根本不应该是部署版本,因为奇数版本总是实验性的,永远不会获得长期支持。 6.x是9个月前发布的node.js的当前活动LTS(长期支持)版本。即使v4.x也在维护,直到2018年4月。如果你的托管服务提供商只提供5.x并且不让你运行自己的版本或选择支持的更现代的版本,他们根本不是一个非常好的节点应用程序托管服务提供商