Node.js v6.11.2中使用指数运算符**报错原因咨询
问题解决:Node.js v6.11.2中
**指数运算符报错的原因及方案 你遇到的问题核心是Node.js v6.11.2版本默认不支持ES2016引入的**指数运算符,虽然Node.js基于V8引擎,但不同Node版本集成的V8版本有差异,这个版本的V8还未把该特性纳入默认支持范围。
为什么会报错?
指数运算符**是ES2016(ES7)的新特性,Node.js对它的支持情况如下:
- Node.js v7.0.0及以上:默认支持该特性
- Node.js v6.5.0至v6.11.x:仅能通过
--harmony实验性标志启用,默认不开启 - 低于v6.5.0的版本:完全不支持
你的Node.js v6.11.2属于第二个区间,所以直接运行脚本会触发SyntaxError。
可行的解决方案
- 升级Node.js版本(推荐):把Node.js升级到v7.0.0或更高版本,这样就能直接使用
**运算符,完美符合Airbnb ESLint风格指南的要求。 - 使用实验性标志运行脚本:如果暂时无法升级,运行脚本时添加
--harmony参数:
注意:node --harmony your-script.js--harmony标志启用的是实验性特性,可能存在稳定性问题,不建议在生产环境使用。 - 临时改用
Math.pow():如果上述两种方案都不适用,只能暂时回到Math.pow()实现相同功能,虽然不符合Airbnb的风格,但能保证当前版本的兼容性:// 兼容v6.11.2的写法 const max = Math.pow(2, 16);
额外小技巧
如果你想查看当前Node.js版本支持的实验性特性,可以运行以下命令:
node --v8-options | grep harmony
能看到所有可通过--harmony启用的特性列表。
内容的提问来源于stack exchange,提问作者Lycopersicum
相关产品推荐
相关产品推荐

