DataCloneError из веб-пакета - PullRequest
       5

DataCloneError из веб-пакета

0 голосов
/ 03 октября 2018

В нашей системе отслеживания сбоев я вижу множество DataCloneError со следующим сообщением:

Failed to execute 'postMessage' on 'Window': 
function (e,t,n){"use strict";e.exports=n(1360)} could not be cloned.

Время, когда они впервые появились, соответствует обновлению до веб-пакета 4. Мы используем разделение поставщиков для разделения нашегосвязать с vendor ~ app.js и app.js, которые добавляются на страницу в указанном порядке.Функция в сообщении об ошибке появляется в самой первой части vendor ~ app.js.

Ошибка происходит с несколькими браузерами и ОС, но я не смог воспроизвести ее сам.Сайт, на котором это происходит, https://wolt.com

Что может вызвать этот сбой?

1 Ответ

0 голосов
/ 17 октября 2018

Ошибка определенно вызвана передачей функции в window.postMessage() (см. этот SO-ответ о том, почему передача функции не работает).Вопрос в том, кто это называет?В моем случае это было расширение, которое у меня было (угловое предзнаменование).Я нашел это, заглушив window.postMessage:

window._postMessage = window.postMessage
function f(...args){
  console.log({args})
  window._postMessage(...args)
  throw new Error('stack trace please')
}
window.postMessage = f

Поиск вашего исходного кода с помощью отладчика firefox обнаружил несколько случаев вызова window.postMessage, включая некоторое взаимодействие с iframes.Непонятно, кто из них, если таковые имеются, будет регулярно выдавать ошибки.

...