Как импортировать библиотеку dat. gui в проект Sapper / Svelte? - PullRequest
0 голосов
/ 15 января 2020

У меня есть стандартный проект Sapper, подобный этому:

routes
├── application
   ├──- index.svelte
   ├──- _brush.js
   ├──- (...etc)

Я хочу sh установить библиотеку 'dat. gui' в мой проект, и я установил: $ npm install --save dat. gui с успехом.

<script>
    import { onMount } from 'svelte';   
    import { Brush } from './_brush.js';
    import * as dat from 'dat.gui';

    // dat.GUI
    let brushParams = { ... my chosen params}

    onMount(()=> {
        // loading dat.GUI
        let gui = new dat.GUI();
        console.log(gui);
    }

Приложение Sapper все время падает со следующим сообщением: ReferenceError: окно не определено в Object ... et c.

Каким должен быть правильный способ импорта такой библиотеки в sapper js? Спасибо

1 Ответ

1 голос
/ 15 января 2020

Звучит как дата. gui падает, если вы require это в узле. Я утверждаю, что это ошибка, и призываю вас поднять проблему - просто потому, что ей нужен DOM, чтобы делать ничего не означает, что он должен взорваться, если модуль импортируется в среду без DOM.

Хотя мы можем обойти это. Вместо статического импорта c вы можете динамически импортировать его в ваш onMount (который не работает на сервере):

<script>
    import { onMount } from 'svelte';   
    import { Brush } from './_brush.js';

    // dat.GUI
    let brushParams = { ... my chosen params}

    onMount(()=> {
        import('dat.gui').then(dat => {
            // loading dat.GUI
            let gui = new dat.GUI();
            console.log(gui);
        });
    }
</script>
...