Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Array.prototype.values()未定义-使用Babel在NodeJS环境中传输ES6_Javascript_Node.js_Ecmascript 6_Babeljs - Fatal编程技术网

Javascript Array.prototype.values()未定义-使用Babel在NodeJS环境中传输ES6

Javascript Array.prototype.values()未定义-使用Babel在NodeJS环境中传输ES6,javascript,node.js,ecmascript-6,babeljs,Javascript,Node.js,Ecmascript 6,Babeljs,我的设置是: $ babel --version 6.3.15 (babel-core 6.3.15) $ node --version v5.1.0 在这种情况下,使用Webstorm 11 IDE也很重要 我正在使用Babel(js)传输以下ES6,并设置了一些日志来验证: Array.from([ 'a', 'b' ].keys()); Array.from([ 'a', 'b' ].values()); // TypeError: ["a","b"].values is not a

我的设置是:

$ babel --version
6.3.15 (babel-core 6.3.15)
$ node --version
v5.1.0
在这种情况下,使用Webstorm 11 IDE也很重要

我正在使用Babel(js)传输以下ES6,并设置了一些日志来验证:

Array.from([ 'a', 'b' ].keys());
Array.from([ 'a', 'b' ].values());  // TypeError: ["a","b"].values is not a function
Array.from([ 'a', 'b' ].entries());
可以快速验证此v:

Array.prototype.values === undefined) // true
请注意,键和条目都存在


你知道可能的原因是什么吗?(我是否错过了Babel上的一个特殊选项标志或其他东西来开启对该功能的支持?)。感谢您的帮助,同时将继续检查文档等。

提供完整性答案。BabelJS需要一个额外的polyfill包来扩展它,使其具有一些额外的ES6+功能,如本问题中的功能

npm install babel-polyfill --save
然后在受影响模块顶部插入以下require语句,以获得所需(发电机)行为:

require("babel-polyfill");

这应该是您所需要的全部,只需导入模块即可添加所需的polyfill

我知道,您接受了答案,但我强烈建议使用node.js

有了这个库,您将忘记在JS特性支持方面遇到的任何问题。 它包括ECMAScript 5、ECMAScript 6的多填充:承诺、符号、集合、迭代器、类型化数组、ECMAScript 7+建议、setImmediate等。还有一些附加功能,如字典或扩展部分应用程序

安装和使用依赖关系很容易:

npm i core-js --save
然后在您的项目中,以这种方式使用它,以包括它支持的所有功能:

// Without global namespace pollution 
var core = require('core-js/library');
或者像这样,如果您只想包含特定的功能(在您的示例中,您缺少Array.prototype.values()):


在我自己发现这个库之后,这个库对我来说是每个项目的“必备品”。包装说明可在官方页面找到:

您必须手动要求polyfill感谢Paolo,现在查看。您可能希望将您的评论放在一行回答中,这样我就可以相信您的评论是否有效。为了防止另一个功能缺失,您应该查看;)太好了,谢谢,这就是解决方案。摩卡咖啡测试全部通过-谜团解开。干杯@朱利奥贝塔-谢谢,我打开了那个链接,但我没有完全理解“巴贝尔+核心JS”的含义。非常好的建议。谢谢你的回答。我对它投了更高的票,因为它看起来是个不错的选择。我意识到巴贝尔在内部依赖于这个库,所以现在我将保留被接受的答案。如果更多的选民选择这个答案,那么我很乐意将其作为正确答案。正如Arceldon已经说过的,babel polyfill使用core js本身,并加载所有需要的额外运行时(如再生器)。
require('core-js/fn/array/values');