如何从内部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
相关产品推荐
相关产品推荐

