2

我有一条动态路线:

routes/artwork/[slug].svelte.

一切都很好npm run dev

但是当我npm run export缺少那些动态的 slug 路线时。我在 中没有看到它们,__sapper__/export当我上传到 Netlify 时,这些页面也丢失了。

有什么线索我可以解决这个问题吗?我错过了什么明显的东西吗?

4

4 回答 4

7

sapper export通过构建您的应用程序,运行它,然后访问/并递归访问它找到的每个内部链接来工作。出于这个原因,必须可以通过跟随主页上的链接(例如,通过一个页面,该页面将映射到)来访问/artwork/foo等。/artwork/barroutes/artwork/index.svelte/artwork

于 2019-10-22T13:51:42.983 回答
0

Rich Harris 的回答添加额外的上下文:

如果在动态路由之前爬错了类似的路由 URL,它不会尝试生成动态路由。

主页链接使用"/events/slug"而不是href="events/slug",开发站点将在主页链接上正确提供 404,并在事件页面上提供动态 slug。但是,在构建时,根本不会生成 slug。

于 2020-07-10T22:43:03.523 回答
0

正如coldeau在我的案例中提到的那样,问题是我将页面组件包装在一个组件中,该TransitionWrapper组件具有启动并在安装时翻转到。一个简单的解决方法是启动它,然后在安装时翻转它两次:{#if show}falsetruetrue

// TransitionWrapper.svelte
...
let show = true;

onMount(() => {
    show = false;
    show = true;
});
...

由于代码是在 onMount 内部执行的,因此根据我运行的测试它可以正常工作

于 2021-03-03T07:41:44.690 回答
0

万一有人有这个问题。上面的解决方案并没有真正帮助,因为我有很多嵌套路由,您无法使用该--entries方法指定这些路由。

但是有效的是404.svelte在我的routes文件夹中创建一个文件,然后将其添加到我的package.json

"export": "sapper export --legacy --entry \"/ /404\"",
"postexport": "mv __sapper__/export/404/index.html __sapper__/export/404.html",

此解决方案的来源来自此github 问题

于 2021-08-24T16:54:57.430 回答