我有一条动态路线:
routes/artwork/[slug].svelte
。
npm run dev
都可以很好地工作。
但是当我npm run export
时,那些动态弹头路线丢失了。我没有在__sapper__/export
中看到它们,并且当我上传到Netlify时页面也丢失了。
有什么线索可以解决这个问题吗?我错过了明显的事情吗?
答案 0 :(得分:1)
sapper export
的工作方式是构建您的应用程序,然后运行它,然后访问/
,并递归访问它找到的每个内部链接。因此,必须有可能通过跟随主页上的链接(例如,通过/artwork/foo
页面进入/artwork/bar
和routes/artwork/index.svelte
来映射到{{1} }。
答案 1 :(得分:0)
要将其他上下文添加到Rich Harris's answer:
如果在动态路由之前未正确爬取相似的路由URL,它将不会尝试生成动态路由。
主页链接使用"/events/slug"
而不是href="events/slug"
,开发人员站点将在主页链接上正确提供404,并在事件页面上提供动态信息。但是,在构建过程中,这些子弹根本不会生成。
答案 2 :(得分:0)
正如 collardeau 在我的例子中提到的,问题是我将页面组件包装在一个 TransitionWrapper
组件中,该组件具有 {#if show}
,它是 false
开始并翻转挂载到 true
。一个简单的解决方法是使用 true
启动它,然后在挂载时翻转两次:
// TransitionWrapper.svelte
...
let show = true;
onMount(() => {
show = false;
show = true;
});
...
由于代码是在 onMount 内部执行的,因此根据我运行的测试,它可以正常工作