svelte - 如何将 dat.gui 库导入到 Sapper/Svelte 项目中?

标签 svelte dat.gui sapper

我有一个像这样的标准 Sapper 项目:

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

我希望将库“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: window is not Defined at Object...etc.

将这样的库导入 sapperjs 的正确方法应该是哪种?谢谢

最佳答案

听起来如果您在 Node 中require dat.gui 就会崩溃。我认为这是一个错误,并鼓励您提出问题 - 仅仅因为它需要 DOM 才能执行任何操作,并不意味着如果将模块导入到环境中,它就会崩溃没有 DOM。

不过,我们可以解决这个问题。您可以在 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>

关于svelte - 如何将 dat.gui 库导入到 Sapper/Svelte 项目中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59753482/

相关文章:

node.js - 将Mongo和Sapper服务器与Docker连接

javascript - 如何在 sapper 上获得正确的 http 状态代码?

svelte - 如何在 Svelte 中订阅的商店中发生值更改时触发功能?

javascript - 这个 dat.gui add 函数中的第三个参数的含义是什么?

svelte - 这个 vite 错误是什么意思?语法错误 : Unexpected token (6:180) at Object. pp$4.raise

node.js - Svelte/Sapper - 遇到与 Luxon 和 Lodash 构建相关的错误

javascript - 对属性更改运行查询

javascript - dat.GUI 自定义位置未显示

javascript - OrbitControls 和 dat.gui 文本不起作用

svelte - 如何强制 svelte 编译器包含样式规则?