JSON Ошибка: Svelte, если выражения не удалось скомпилировать в процессе сборки, измеряя внутреннюю ширину, привязанную к переменной в svelte: window - PullRequest
0 голосов
/ 20 апреля 2020

Почему при выборе тега привязки блога возникает ошибка JSON, когда выражение включает атрибут окна svelte?

Атрибут не измерим в блоках if или только при измерении с помощью || или операторы &&?

Наблюдения:

  • {# if condition1} работает локально.
  • {# if condition1 || condition2} работает локально в процессе сборки
  • {# if (condition1 || condition2)} работает локально в процессе сборки при выполнении запросов из блока if с использованием тегов привязки. Я получаю ошибку JSON, запрашивающую блог . json, потому что он сталкивается с оператором '>' в условии 2 (измерение связанной внутренней ширины окна).
<script>
  import { fly, fade } from 'svelte/transition';
  import Burger from './Burger.svelte';

    export let segment; 
  let x,y;
  let isOpen = false;

</script>

<style>
/*...*/
</style>

<svelte:window bind:innerWidth={x} bind:innerHeight={y} />

<nav>
  <Burger bind:open={isOpen} ref=burger on:toggle={ () => isOpen = x < 768 ? !isOpen : true } />


  {#if (isOpen || x > 767)}
    <ul out:fade in:fly="{{ y, duration: 1000 }}" class={isOpen ? 'open' : ''}>
        <li><a aria-current='{segment === undefined ? "page" : undefined}' href='.' on:click={ () => isOpen = x < 768 ? !isOpen : true }>home</a></li>
        <li><a aria-current='{segment === "about" ? "page" : undefined}' href='about' on:click={ () => isOpen = x < 768 ? !isOpen : true }>about</a></li>
        <li><a rel=prefetch aria-current='{segment === "blog" ? "page" : undefined}' class:selected={segment === "blog"} href='blog' on:click={ () => isOpen = x < 768 ? !isOpen : true }>blog</a></li>
    </ul>
  {/if}
...