在下一个api中从.csv资产返回json



使用next 3,我正在努力做一些看起来很简单的事情:我想从next/nitro提供的api中获得餐厅列表,以便在客户端使用它。我的原始文件是.csv文件,存储在assets/:assets/list.csv下。

这是我在我的组件.vue文件:

//...
const { restaurants } = await useFetch('/api/restaurants')
//...

server/api/restaurants.js的内容:

import csv from 'csvtojson'
export default defineEventHandler(async(event) => {  
const data = await csv().fromFile('~/assets/list.csv')
return { data }
})

但是我得到一个错误"[500]文件不存在"。我试过很多变体,但总是在这里或那里得到一个错误。你能帮我想出解决办法吗?谢谢。

实际解决,实现如下:

  • 如文档所示,assets/目录用于由打包器(Vite或Webpack)处理的资源。next不会提供assets/目录下的文件,除非nuxt.config.ts配置了适当的加载器(例如csv加载器)。因此出现了500错误。
  • 另一方面,
  • next Content用于自动解析位于content/目录下的.csv文件:
    • Innuxt.config.ts:
modules: ["@nuxt/content"]
  • 在组件.vue文件中,以下命令将在data.body中公开已解析的csv:
const { data } = await useAsyncData("list", () => queryContent("/list").findOne())

next的美妙之处在于你不需要导入任何东西,它会为你完成。

相关内容

  • 没有找到相关文章

最新更新