Javascript 在NextJS中提供JSON文件的API,我可以编辑这个文件(在构建之后,运行时)并使API提供更新的文件吗?
对问题中的措辞感到抱歉。我最大的问题可能是不知道如何正确表达,因为我无法从谷歌那里得到一点答案 在Next.js中使用api路由,我想提供一个Javascript 在NextJS中提供JSON文件的API,我可以编辑这个文件(在构建之后,运行时)并使API提供更新的文件吗?,javascript,node.js,reactjs,next.js,Javascript,Node.js,Reactjs,Next.js,对问题中的措辞感到抱歉。我最大的问题可能是不知道如何正确表达,因为我无法从谷歌那里得到一点答案 在Next.js中使用api路由,我想提供一个data.json文件。这没有问题,但我也希望能够编辑这个文件后,api反映更新的内容。在构建和运行之后,如果我编辑文件,api仍然返回旧的文件,我甚至可以删除它。我认为这是因为Next.js在构建时复制了该文件,并将其放在.Next目录(?)中的某个地方,但却无法在那里找到它 下面是我正在做的事情的简化版本: /pages /api /info.j
data.json
文件。这没有问题,但我也希望能够编辑这个文件后,api反映更新的内容。在构建和运行之后,如果我编辑文件,api仍然返回旧的文件,我甚至可以删除它。我认为这是因为Next.js在构建时复制了该文件,并将其放在.Next目录(?)中的某个地方,但却无法在那里找到它
下面是我正在做的事情的简化版本:
/pages
/api
/info.js
/data
/data.json <- file I want to use with the api
非常感谢任何关于这方面的指导使用
require
在任何节点应用程序中包含一个文件肯定会将json文件绑定到应用程序运行时或构建时
您描述的功能听起来很像,但接下来也会缓存这些文件
请尝试在API中读取该文件
const fsp = require('fs').promises
export default async function (req, res) {
try {
const file_data = await fsp.readFile('../../data/data.json')
const json_data = JSON.parse(file_data)
// Do stuff
res.status(200).json(data.something)
}
catch (error) {
console.log(error)
res.status(500).json({ error: 'Error reading data' })
}
}
实际静态文件
在开发中,您可能可以通过在静态文件更新时触发重建来解决这个问题
如果要独立于已构建的应用程序更新数据文件,则可能需要在下一个构建中单独托管这些文件。如果您要下一次导出一个完全静态的站点,您可能已经有了放置静态文件的位置。如果没有,您可以将数据文件与其他文件、或类似文件一起提供。是在开发项目时更新文件的问题,还是在某个地方构建和托管应用程序时的问题?@Matt是构建和托管应用程序的问题。我在docker容器上运行它,并将此json文件放在一个卷中,我希望能够编辑该文件并使api反映更新的内容我在使用
next dev
并在开发模式下运行应用程序时没有问题。我的问题是什么时候部署它。我不想只为整个文件或任何东西提供服务,如果我能让它从nextjs不会缓存itI的地方读取文件,那么nextjs的API路由将非常有效。我不确定next如何处理常规文件,也许可以尝试读取它?我添加了一个例子,非常好,非常感谢!我必须使用path.join(process.cwd(),'data/data.json')
作为我传递到fsp.readFile()
的路径,因为它似乎不仅仅接受一个相对路径,而且现在一切都按预期工作。非常感谢你抽出时间。太好了\uuu dirname
作为此文件的前缀可能更为一致,但有时在dev/build之间可能存在差异