в Sveltekit, что бы они не срабатывали при ssr?
BOM? Byte order mark?
https://www.w3schools.com/js/js_window.asp
s/mark/mask/
Мне тут ответили так https://discord.com/channels/457912077277855764/819723698415599626/886179040522821692 Но чёт какя-то дичь
Хз, что вам там ответили, но если либа использует функции браузера при инициации модулей, это плохие либы, надо их просить в ишью так не делать. А грузить через async import в onmount.
Не думаю, что либа виновата. Здесь скорее нужна какая-то техника, позволяющая манипулировать модулями динамически.
Либа виновата. У неё очевидно сайдэффекты есть при инициации модуля, это суперплохая практика и вообще хз когда может быть оправданно. Техника есть, я её описал. let module; onMount(async () => (module = await import('libname')))
Ну конечно, если ей нужен объект Window для работы, она для этого и написана. Дело-то не в либе, а в том что бы фильтровать браузерный функционал на сервере, удобно, динамично, понятно.
Еще раз, вопрос в сайдэффектах. Либа не должна использовать браузерные API, пока разработчик не вызовет какой-то метод, не инициирует класс и пр. Импорт из модуля не должен порождать сайдэффекты.
Ок, не должна и не делает. Вопрос был в том какие техники для фильтрации чисто браузерного функционала есть. Ответ только import { browser } from '$app/env';
Да, это. Плюс onMount. Ну а как иначе-то :)
еще есть техника переписать либу так чтобы на инициализации модуля она не делала всякий шлак)
Обсуждают сегодня