【问题标题】:How to use file apis with sveltekit netlify如何在 sveltekit netlify 中使用文件 api
【发布时间】:2021-08-29 09:00:51
【问题描述】:

我有这样的代码

import fs from 'fs';
import { promisify } from 'util';
import type { SvelteComponent } from 'svelte';

const readdir = promisify(fs.readdir);

export async function getAllPosts() {
    const files = (await readdir(`src/data/posts`)).map((i) => i.replace(/.svx$/, ''));
    return files;
}

和我的服务器路由

import { getAllPosts } from '../../lib/blog';

export async function get() {
    return { body: await getAllPosts() };
}

它在开发中运行良好,但在 netlify 上的生产环境中无法运行,因为实际上已经没有 src/data/posts 目录了。如何让 sveltekit 在构建时生成这个数组?

我曾尝试使用静态适配器,但它无法正确生成路由,因为尽管站点上的所有页面都有链接,但它们不会立即生成。所以我想我必须使用 netlify 适配器。

【问题讨论】:

  • 我想出了一种方法让它与 adapter-static 一起工作,但是我将其保持打开状态,因为我认为它对其他人有用。

标签: svelte netlify sveltekit


【解决方案1】:

您是正确的,/src/data/posts 文件夹不再存在,因此您的代码不起作用。

您要做的第一件事是将您的资产复制/functions 文件夹,以便它们首先可用。

然后你必须确保你的脚本看起来在正确的位置,这里有一些魔法正在发生,因为函数没有在与放置它的位置相同的位置执行。您可以在 Netlify 支持论坛上阅读更多相关信息,主题为 this one

如果您最终找到可行的解决方案,也可以在此处添加作为答案。

【讨论】:

  • 会做,虽然我不需要这样做,直到我需要在我的网站上不能静态生成的东西。感谢您的回复。我认为它可能能够像猴子修补文件 api 一样在苗条级别上进行处理,以使它们完全像为任何其他生成器所做的那样工作。你怎么看?
猜你喜欢
  • 2021-07-24
  • 1970-01-01
  • 2022-01-05
  • 2021-10-16
  • 1970-01-01
  • 2021-09-28
  • 2021-08-30
  • 1970-01-01
  • 2022-11-03
相关资源
最近更新 更多