我正在编写一些在节点上运行的Javascript,并使用node_modules
中的模块。其中一些恰好出现在ES6中。
不幸的是,我已经了解到我的JS将部署在节点v5上。所以我用快速babel src-dir --out-dir out-dir
但是当然,当我在节点中运行代码时,只要依赖关系导致node_modules
中的任何ES6文件,它就会barfs。
Node v6 +顺利运行,但我无法控制部署环境。
我应该如何解决这个问题 - 我是否应该考虑转换所有节点模块?这似乎很多工作。我错过了一些明显的东西吗?
.babelrc是这样的:
{
"presets": [
[ "es2015" ],
],
"plugins": []
}
答案 0 :(得分:1)
如果您依赖于在您的环境中无效的npm模块,我只能想到四种选择:
修复可能涉及修复一两个错误,或者可能涉及将它们自己转换为ES5目标 - 具体取决于问题所在。
可能有2)和3)的组合,你可以从模块中借用你真正需要的东西,并为节点v5修复它并将其添加到你的项目或在Github上分叉。 NPM模块通常是开源的,可以“自行修复”选项。
注意:如果您在节点v5下显示了确切问题是什么运行的确切示例,我们可以更具体地帮助哪个选项最简单。但是,如果没有这样的细节,我们所能做的就是描述您可供选择的整体选项。
哦,我会对云服务进行锤击,让他们真正地了解这一点。 5.x没有来自node.js基础的长期支持,从来没有。它根本不应该是部署版本,因为奇数版本总是实验性的,永远不会获得长期支持。 6.x是9个月前发布的node.js的当前活动LTS(长期支持)版本。即使v4.x也在维护,直到2018年4月。如果你的托管服务提供商只提供5.x并且不让你运行自己的版本或选择支持的更现代的版本,他们根本不是一个非常好的节点应用程序托管服务提供商