Используйте JS метку синтаксиса "$:" без ошибки "Не удается получить доступ к <obj>до инициализации" - PullRequest
0 голосов
/ 01 мая 2020

Я использую этот код в своем приложении Svelte:

<script>
  import { query } from '@urql/svelte'

  import { MY_QUERY } from 'queries'

  $: myQuery = query({
    query: MY_QUERY,
    variables: { id }
  })
</script>

{#if !$myQuery}
  Loading...
{:else}
  Oh WOW! {$myQuery.data}
{/if}

При попытке использовать тот же код в Sapper я получаю эту ошибку:

Cannot access 'myQuery' before initialization.

Если я изменю следующую строку

  • с этого: $: myQuery = query({

  • на это: const myQuery = query({

работает!

Почему?

1 Ответ

2 голосов
/ 01 мая 2020

Так как это код Sapper, и я не вижу ничего более очевидного, я думаю, что вы запустили эту ошибку эту ошибку . Ошибка происходит только на стороне сервера (SSR), не так ли?

Тогда обходной путь должен подсказывать компилятору объявить переменную в нужном месте:

  let myQuery // <=== add this

  $: myQuery = query({
    query: MY_QUERY,
    variables: { id }
  })
...