为什么预加载在站点的本地开发版本与站点的本地导出版本中表现不同?

问题描述

苗条 3.34.0,工兵 0.28.10。

文件位于 /src/routes/data/index.svelte。网址格式为 http://localhost:3000/data/?day=40http://localhost:3000/data/认为当天)。该页面从远程 url 获取 JSON 数据并显示它。

<script context="module">
  import { buildDataUrl,formatDate } from '../../helpers';
  import moment from 'moment';

  export async function preload(page) {
    const query = page.query;
    let day = Number.parseInt(query.day);
    if (Number.isNaN(day)) day = moment().dayOfYear();
    console.log(`preload fired,day: ${day},${JSON.stringify(query)}`);
    const get = await this.fetch(buildDataUrl(day),{

当我在开发模式下使用 sapper dev 在本地运行它时,url 查询参数得到尊重并正确使用。当查询字符串更改时,页面将重新呈现,无论是通过编辑它还是点击页面上的链接

当我使用 npx sapper export && npx serve __sapper__/export(参见文档 here)在本地运行它并转到 http://localhost:5000/data/?day=40 时,无论查询字符串中的内容如何,​​日期值始终认为当天。即使使用 ?day=a 也不会改变行为——这应该会导致错误

预加载文档为 here

这感觉像是一个错误,但我不能确定。

解决方法

我试图复制它,但是,即使导出后它也能在我的机器上按预期工作。

并且由于您有此行 if (Number.isNaN(day)) day = moment().dayOfYear();,即使您将 NaN 传递给查询,它也会替换为当前日期,所以我不明白为什么它会导致错误>

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...