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

如何从内部JSON文件获取数据并通过console.log打印输出

实现方案

现有代码问题说明

你当前的写法存在两个核心问题:

  • Node.js 中直接用require引入JSON文件会触发模块缓存,后续JSON文件动态更新后,再次读取也只能拿到缓存的旧内容
  • require引入JSON时已经自动将内容转为JS对象,额外加JSON.parse会直接抛出类型错误

第一步:调整models层读取逻辑,实现动态读取最新JSON

修改./models/varer.js代码,改用fs模块实时读取文件,避免缓存问题:

// models/varer.js
const fs = require('fs')
const path = require('path')

// 每次调用都读取最新的JSON文件内容
function getLatestVarer() {
  // 此处路径根据你的varer.json实际存放位置调整即可
  const jsonPath = path.resolve(__dirname, './varer.json')
  const jsonContent = fs.readFileSync(jsonPath, 'utf8')
  return JSON.parse(jsonContent)
}

module.exports = getLatestVarer

第二步:修改controller层代码,实现控制台打印

调整后的varer-controller代码如下:

const getLatestVarer = require("./../models/varer");
const express = require("express");
const router = express.Router();

router.get("/getproducts", (req, res) =>{
  // 调用方法获取最新JSON数据
  const products = getLatestVarer()
  // 控制台输出数据
  console.log(products)
  res.send(products)
})

module.exports = router

可选:增加异常兼容处理

可以在读取JSON的方法中加异常捕获,避免JSON格式错误导致服务崩溃:

function getLatestVarer() {
  try {
    const jsonPath = path.resolve(__dirname, './varer.json')
    const jsonContent = fs.readFileSync(jsonPath, 'utf8')
    return JSON.parse(jsonContent)
  } catch (err) {
    console.error('读取varer.json失败:', err)
    return []
  }
}

内容的提问来源于stack exchange,提问作者Mikkel Nielsen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 01:06:02