Array.prototype.values()未定义-使用Babel在NodeJS环境中转换ES6
Array.prototype.values() is undefined - using Babel to transpile ES6 in NodeJS environment
我的设置是:
$ 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("babel-polyfill");
这应该是您所需要的,只需导入模块即可添加所需的polyfill
我知道,你接受了答案,但我强烈建议使用node.js的core-js标准库。
有了这个库,你就不会再看到JS功能支持方面的任何问题了。它包括ECMAScript 5、ECMAScript6的polyfill:承诺、符号、集合、迭代器、类型化数组、ECMASscript 7+建议、setImmediate等。一些附加功能,如字典或扩展的部分应用程序。
安装依赖项并使用它很容易:
npm i core-js --save
然后在你的项目中,以这种方式使用它,包括它支持的所有功能:
// Without global namespace pollution
var core = require('core-js/library');
或者像这样,如果你只想包括特定的功能(在你的情况下,你缺少Array.prototype.values()):
require('core-js/fn/array/values');
在我自己发现这个库之后,这个库对我来说是每个项目的"必备品"。包装说明可在官方页面找到:https://www.npmjs.com/package/core-js
相关文章:
- nodejs-expressjs上传图像并显示它们
- TypeError:在不兼容的接收器nodejs上调用了方法Uint8Array.length
- 难以访问的JS环境中的语法错误
- NodeJS-readline暂停和恢复事件发射器(逐行读取)
- NodeJS日期格式不起作用
- Nested Q.all nodejs
- Nodejs API控制器,用于在API之间切换
- 否'访问控制允许来源'标头存在于IISNOde中请求的资源(AngularJS+NodeJs)上
- 如何在大型nodeJS代码的基础上逐步引入typescript
- 在Nodejs中Express输入DEBUG=app时权限被拒绝/bin
- 无法使用nodeJS在html中设置Image src
- 与域在同一台计算机上运行的NODEJS服务器的CORS错误
- 键入环境安装不起作用
- NodeJS API调用中Array中的Push和Pull元素
- Array.prototype.values()未定义-使用Babel在NodeJS环境中转换ES6
- NodeJS如何在多用户环境中处理基元和对象
- 如何在NodeJS中使用用户的环境执行
- NodeJS/ExpressJS:在生产环境中提供单个连接的JS文件
- 带有docker卷的Nodejs开发环境
- NodeJS / ExpressJS 模拟多个环境