Электрон - переменная изменяет значение при передаче от рендера к основному - PullRequest
0 голосов
/ 20 октября 2019

С приближением Хэллоуина я получаю несколько жутких ошибок JS. Это тот, который я не могу обернуть головой и не смог отладить вообще. По сути, я использую Electron, и когда я наблюдаю переменную в процессе рендеринга, это нормально, но когда я вызываю ее в основном процессе, он пропускает целую пару ключ-значение:

function someFunction(someVariable) {
  console.log(someVariable)
}

console.log(myVariable) // { key1: value1 }
myVariable.key2 = value2
console.log(myVariable) // { key1: value1, key2: value2 }
someFunction(myVariable) // { key1: value1 }
console.log(myVariable) // { key1: value1, key2: value2 }

У меня естьабсолютно не знаю, как это возможно. С точки зрения источника событий это в основном то же самое, что и вызов обычной функции. Объект предназначен для одноразового использования и на него не ссылаются в других местах, поэтому невозможно изменить его между console.log и someFunction.

Перезапуск процесса узла и обновление страницы рендерера не имеют никакого эффекта.

Обновление:

Мне удалось получить временный обходной путь, который работает в течение нескольких минут, прежде чем снова вернуться к описанному выше поведению.

Если яdo:

someFunction(JSON.parse(JSON.stringify(myVariable)))

Только один раз вызовы функций будут волшебным образом работать в течение следующих нескольких минут. Я запутался здесь, так как ничто не должно удалять ключ;более того, переменная объявляется как const, поэтому не должно быть возможности что-либо напрямую перезаписать ее прошлым значением объекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...