You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Node.js的axios或node-fetch将数据写入URL路径的JSON文件

问题解答

核心结论

你无法直接通过axios或node-fetch发送POST请求修改https://xenialbase.web.app/file.json这类Firebase Hosting托管的静态JSON文件,静态托管服务本身不支持直接写入修改托管的静态资源。

返回200但数据未生效的原因

Firebase Hosting默认仅处理GET、HEAD等读取类请求,用于返回托管的静态资源。你发送的POST请求没有对应的服务端写入逻辑,返回200只是服务端的兜底响应(比如路由匹配到了默认规则、CORS预检请求返回成功),实际服务端并没有修改存储的file.json文件,因此刷新后看不到更新内容。

解决方案

Firebase生态下最合理的方案是改用Firebase Realtime Database存储需要读写的JSON数据,该服务原生提供REST读写接口,操作方式和你预期的直接读写URL路径的逻辑一致:

  • 开通Realtime Database后你会得到专属数据库域名,格式为https://<你的项目ID>.firebaseio.com/
  • 写入数据时如果要覆盖整个JSON内容使用PUT请求,要追加子节点数据使用POST请求,请求地址后缀加.json即可
  • 需要提前在Firebase控制台调整数据库安全规则,开放对应路径的读写权限,测试阶段可以临时开放全读写权限,生产环境务必补充权限校验

调整后的参考代码

var axios = require("axios")
// 替换为你自己的Firebase Realtime Database对应路径地址
axios
  .put('https://<你的项目ID>.firebaseio.com/file.json', {
    todo: 'Buy the milk'
  })
  .then(res => {
    console.log(`statusCode: ${res.status}`)
    console.log(res.data)
  })
  .catch(error => {
    console.error(error)
  })

修改完成后直接GET同一个https://<你的项目ID>.firebaseio.com/file.json地址,就能拿到更新后的JSON数据。

如果确实需要修改Firebase Hosting上的静态文件,你需要额外部署云函数接收写入请求,在云函数内调用Hosting部署API更新静态资源,该方案复杂度高,非特殊需求不建议使用。


内容的提问来源于stack exchange,提问作者Adhvaith Prasad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 07:18:03