Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在NextJS中提供JSON文件的API,我可以编辑这个文件(在构建之后,运行时)并使API提供更新的文件吗?_Javascript_Node.js_Reactjs_Next.js - Fatal编程技术网

Javascript 在NextJS中提供JSON文件的API,我可以编辑这个文件(在构建之后,运行时)并使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

对问题中的措辞感到抱歉。我最大的问题可能是不知道如何正确表达,因为我无法从谷歌那里得到一点答案

在Next.js中使用api路由,我想提供一个
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之间可能存在差异