【发布时间】:2020-09-03 09:04:17
【问题描述】:
在我的 sapper 应用程序中,我将一些数据存储在 src/data/videoslist.json 的 json 文件中,这是一个 json 格式的对象数组。
我需要检索索引页面中的数据以将其传递给组件。这是我在 src/routes/index.svelte 顶部的代码
<script context="module">
export async function preload() {
const response = await this.fetch('../data/videoslist.json');
const responseJson = await response.json();
return {
videos: responseJson
}
}
</script>
我收到错误 500
invalid json response body at http://127.0.0.1:3000/data/videoslist.json reason: Unexpected token < in JSON at position 0
文件是纯json,没有别的。意外的令牌
你知道我做错了什么吗?我尝试了很多路径变体 ../ ./ 或将文件移动到路由文件夹,但没有任何效果。
PS:我仍然是 js 和框架方面的新手,对于更了解的人来说,我可能错过了一些非常基本的东西 :)(就像你无法使用 fetch 检索本地文件)。
【问题讨论】:
-
如果是本地json文件,为什么还要使用fetch?制作一个javascript文件,导出json并以“正常”方式导入它不是更简单吗?
-
是的,我想到了,但是json文件的内容是由fs.writeFileSync生成的,每次收集到新数据时都会覆盖整个内容
-
好的,不可能在它前面硬编码这样的东西:
module.exports = { jsonFile: // the json file使用 fs 函数? -
它使用 fetch 因为它只是服务器上的一个本地文件,一旦代码被捆绑并发送到客户端,它就不再是“本地的”。如果您使用这种方法,则每次更改 json 文件时都必须重新捆绑您的应用程序。
-
是的,我确认 Stephane 所说的。我最初尝试在
标签: json fetch local svelte sapper