writable } from "svelte/store";
                  
                  
                  
                  
                  
                  const __config = JSON.parse(GM_getValue("config", JSON.stringify({
                  
                  
                      style: {
                  
                  
                          code: {
                  
                  
                              theme: "tomorrow", fira_code: false
                  
                  
                          }
                  
                  
                      }
                  
                  
                  })));
                  
                  
                  В котором, в __config читается значение config из хранилища, или создаётся дефолный объект с настройками(в данном случае, последний).
                  
                  
                  Объявляю на экспорт две переменные:
                  
                  
                  export const code_theme = writable(__config.style.code.theme);
                  
                  
                  export const firacode  = writable(false);
                  
                  
                  В App.svelte импортирую:
                  
                  
                  import { code_theme, firacode } from "./stores.js";
                  
                  
                  
                  
                  
                  И прикручиваю биндом значение firacode в чекбокс:
                  
                  
                  <label>Fira Code<input type="checkbox" bind:checked={ $firacode }></label>
                  
                  
                  Затем, на странице кликаю в этот чекбокс и в консоль получаю Uncaught TypeError: R.set is not a function, при этом, в хранилище, изменяется значение __config.style.code.fira_code, так как размещённый там же для теста: 
                  
                  
                  window.addEventListener("beforeunload", () => {
                  
                  
                      localStorage.setItem("fira_code", __config.style.code.fira_code);
                  
                  
                  });
                  
                  
                  Сохраняет в локалсторадж true по ключу fira_code.
                  
                  
                  
                  
                  
                  Собираю проект в расширении __TamperMonkey__, чтобы разместить на странице виджет.
                  
                  
                  
                  
                  
                  Подскажите пожалуйста, почему возникает ошибка и каким образом сохраняется занчение в __config.style.code.fira_code, если на экспорт объявление выглядит так export const firacode  = writable(false);?
                  
                  
                
а без $ напрямую не пробовал дёргать методы?
очевидно что это либо не весь код и гдето есть сохранение в конфиг, либо у вас закешировалась в браузере какая-то версия бандла в которой это поведение было и вызывало ошибку. я хз какое еще может быть обьяснение
Обсуждают сегодня