V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
Deshun
V2EX  ›  程序员

Astro 多层目录报错,有大佬知道怎么解决吗

  •  
  •   Deshun · 2023-12-14 10:11:04 +08:00 · 1144 次点击
    这是一个创建于 375 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Astro 项目,比如我的 blog 分类下再分日期存放文章,编译时就会报错: Expected "slug" to match "[^\/#\?]+?", but got "2023-12-13/text"

    文件位置:/src/content/blog/2023-12-13/text.md

    如果全部放在 /src/content/blog/ 目录下就不会有问题。

    有熟悉 Astro 的大佬知道怎么解吗?

    6 条回复    2023-12-14 11:10:32 +08:00
    blankmiss
        1
    blankmiss  
       2023-12-14 10:32:02 +08:00
    Astro 是什么 下面地址也不贴一个吗
    blankmiss
        2
    blankmiss  
       2023-12-14 10:32:18 +08:00
    下面地址 --> 项目地址
    LavaC
        3
    LavaC  
       2023-12-14 10:36:51 +08:00
    这么放是没问题的,应该是你其它地方写错了,看看[...slug].astro
    Deshun
        4
    Deshun  
    OP
       2023-12-14 10:46:32 +08:00
    @LavaC [...slug].astro 是在 /blog 下面:
    ```
    ---
    export const prerender = true

    import { getEntryBySlug, getCollection } from "astro:content";
    import PostLayout from '$/layouts/post.astro';

    export async function getStaticPaths() {
    const allPosts = await getCollection('blog');
    return allPosts.map(post => ({
    params: {
    slug: post.slug
    }
    }))
    }

    const { slug } = Astro.params
    const entry = await getEntryBySlug('blog', slug!)

    const { Content } = await entry.render()
    ---
    <PostLayout slug={slug} content={entry.data} >
    <Content/>
    </PostLayout>
    ```
    LavaC
        5
    LavaC  
       2023-12-14 10:58:14 +08:00
    @Deshun 怪了,参照 issue[#7121]( https://github.com/withastro/astro/issues/7121),同样的代码我也只会在文件叫[slug]而非[...slug]时编译报错。
    Deshun
        6
    Deshun  
    OP
       2023-12-14 11:10:32 +08:00
    @LavaC 非常感谢,问题解决。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5233 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 03:48 · PVG 11:48 · LAX 19:48 · JFK 22:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.