Javascript IE11对象不';t支持属性或方法';Symbol(Symbol.iterator)_a.2p3bca3ct9h
我使用的是Javascript IE11对象不';t支持属性或方法';Symbol(Symbol.iterator)_a.2p3bca3ct9h,javascript,angular,internet-explorer,babel-polyfill,Javascript,Angular,Internet Explorer,Babel Polyfill,我使用的是angular8、tslint5.15和typescriptv3 我正在使用下面的代码以ArryaBuffer的形式读取文件 const reader = new FileReader(); reader.readAsArrayBuffer(<FileObject>); reader.onload = () => { this.uploadedData= new Uint8Array(reader.result as ArrayBuffer
angular8、tslint5.15和typescriptv3
我正在使用下面的代码以ArryaBuffer
的形式读取文件
const reader = new FileReader();
reader.readAsArrayBuffer(<FileObject>);
reader.onload = () => {
this.uploadedData= new Uint8Array(reader.result as ArrayBuffer);
}
上面的代码在ie11中给出了错误
错误类型错误:对象不支持属性或方法
'Symbol(Symbol.iterator)_a.srxqdvyfxlx'
我试着在网上搜索,发现可能我需要添加babel polyfill
,但它对我不起作用
有什么帮助吗?IE11实际上不支持任何ES2015+,因此这意味着没有箭头函数、符号,也没有可编辑项和迭代器。(IE9-IE11确实支持
const
和let
,但不正确。它们支持的早期版本不是标准化的版本。最大的差异在于for
循环。)
如果您想在IE11上运行该代码,则需要将其传输到ES5并添加一些多边形填充。符号和易位性不能正确地进行多重填充,但其他符号和易位性提供了部分功能性的东西。我看到巴贝尔现在建议不要使用自己的
@Babel/polyfill
,而是直接使用(如果需要传输生成器函数)。将“core js
”添加到package.json中,并将导入添加到polyfills.ts
import 'core-js/es6/symbol';
问题与uploadedData参数有关,当我们调用convertLicenseToByteArray方法并使用uploadedData变量时,如果数据未填充或未定义,它将显示此错误 您可以尝试在reader onload函数中调用convertLicenseToByteArray方法
const reader = new FileReader();
reader.onload = (_event) => {
this.uploadedData= new Uint8Array(reader.result as ArrayBuffer);
console.log(this.convertLicenseToByteArray(this.uploadedData).length);
}
对于任何在没有typescript的Aurelia项目中可能遇到此问题的人,我可以通过安装core js来解决此问题,其中包括使此工作正常所需的polyfills
npm安装--保存核心-js@3.6.5
然后,我在.js文件中添加了导入,在那里我遇到了问题,它开始工作
导入“core js”
我尝试了您的建议,但仍然得到了相同的错误!我遵循了与你的答案相似的方法,我相信它会起作用。但是没有运气!新年伊始,事情就这样开始了:)真正意义上的新年快乐!那么,你今年过得怎么样?console.log你的上传数据
,看看对象原型中是否存在Symbol(Symbol.iterator)
。如果不是,它是不可修改的
数据结构,但在我的例子中,它不是未定义的Crowder,您的答案也是正确的,并且解释也很好。但被接受的答案节省了我的时间;)我很高兴能和这样一个正派的人交谈(《新玩具》一书的作者)
const reader = new FileReader();
reader.onload = (_event) => {
this.uploadedData= new Uint8Array(reader.result as ArrayBuffer);
console.log(this.convertLicenseToByteArray(this.uploadedData).length);
}