在获取Sapper上区分服务器端和客户端

时间:2020-11-11 04:30:49

标签: svelte sapper

Sapper使您能够预加载同时在客户端和服务器端运行的功能。

<script context="module">
    export async function preload(page, session) {
        const res = await this.fetch(`blog.json`);
        const article = await res.json();
        return { article };
    }
</script>

我如何区分服务器端呼叫和客户端端呼叫?

Nuxt中,上下文提供isServerisClient进行区分。 sapper是否有一个?

2 个答案:

答案 0 :(得分:0)

我相信process.browser或全局window变量等某些变量仅在客户端可用,因此您应该能够使用它们来确定代码是在客户端上运行还是在客户端上运行服务器。

常规 <script>...</script>标签中,您还可以使用Svelte的onMount生命周期函数来执行仅在客户端上运行的代码(即,在实际安装组件时) )。

答案 1 :(得分:0)

您是否尝试过捕捉错误

[
  {
    "name": "A",
    "value": 1,
    "value2": 11
  },
  {
    "name": "2",
    "value": 2
  },
  {
    "name": "3",
    "value": 3
  },
  {
    "name": "4",
    "value": 4
  },
  {
    "name": "5",
    "value": 5
  },
  {
    "name": "6",
    "value": 6
  },
  {
    "name": "7",
    "value": 7
  },
  {
    "name": "8",
    "value": 8
  },
  {
    "name": "9",
    "value": 9
  },
  {
    "name": "10",
    "value": 10
  },
  {
    "name": "J",
    "value": 10
  },
  {
    "name": "Q",
    "value": 10
  },
  {
    "name": "K",
    "value": 10
  }
]

PS:我实际上在 svelte kit Docs

中找到了解决方案
let isServer;

try {
    let win = window;
    isServer = false;
} catch (e) {
    isServer = true;
}