边说 Babel 代码预期的功能

Edge saying Function expected on Babel'ed code

我有一些非常简单的代码通过 Webpack -> Babel 运行:

let isOn = false;
const videoTag = doc.getElementsByTagName('video')[0];
const trackTag = doc.createElement('track');
const id = someGlobalIHave;

function setMode() {
  const tracks = [...videoTag.textTracks].filter(t => t.kind === 'captions');
  tracks.forEach(track => {
    track.mode = isOn ? 'showing' : 'hidden';
  });
}

trackTag.setAttribute('default', '');
trackTag.setAttribute('src', `/mysource/${id}/captions`);
trackTag.setAttribute('kind', `captions`);

videoTag.appendChild(trackTag);

setMode();

我的全局错误处理程序仅向我发送 Edge 17 的错误 Function expected,第 6 行第 8029 列的可爱缩小位置。

差不多等于:

function s(){
  [...r.textTracks].filter(e=>"captions"===e.kind)
  .forEach(e=>{e.mode=n?"showing":"hidden"})}

我的光标显示我在左旋和左方括号之间的 8029 处。

我在这里缺少什么特殊的 Edge 东西?

更新

这是在 Simo 回答后 运行 在控制台中的一些代码

// doc is defined above from document being passed into method

const videoTag = doc.getElementsByTagName('video')[0];
const x = [1];
[...videoTag.textTracks] // just running this line throws Function expected
Array.from(videoTag.textTracks) // works as expected
[...x,2] // returns [1,2]
videoTag.textTracks.filter(t => true); // Object doesn't support property or method 'filter'

我认为 Edge 在迭代器协议方面存在问题,因此也许您可以尝试用 Array.from 之类的东西替换扩展运算符。 基本上您无法在 NodeList 上迭代或使用扩展运算符。

我上次检查时,IE edge 不支持扩展运算符。 您不需要在您的案例中使用传播运算符。数组过滤器已经创建了一个新数组。

 const tracks = videoTag.textTracks.filter(t => t.kind === 'captions');
    tracks.forEach(track => {
     track.mode = isOn ? 'showing' : 'hidden';
  });