Node.js控制器调用createFolder无报错但未创建文件夹求助
问题分析与修复方案
存在的错误点
- 函数未执行:调用
createFolder时缺少括号,导致函数根本没运行,正确写法是createFolder()(还要传参数) - 变量作用域问题:
createFolder函数内部的name和last_name未定义,该函数无法直接访问req.body里的变量,需要通过参数传递 - 未引入
fs模块:代码中使用了fs.existsSync、fs.mkdirSync但没导入模块,会触发ReferenceError(可能你本地环境有全局依赖,但规范写法必须显式引入) - 目录创建容错性不足:如果上级目录
./tmp不存在,mkdirSync会直接失败,需要添加recursive: true参数自动创建多级目录 - 错误状态码错误:catch块里用了300(重定向类状态码),服务器内部错误应该用500
修正后的代码
const fs = require('fs'); // 请确保引入你的Information模型,路径根据实际项目调整 const Information = require('../models/Information'); exports.saveInformation = async (req, res) => { try { const { name, last_name } = req.body; const newData = new Information({ name, last_name }); const savedData = await newData.save(); if (!savedData) { return res.status(500).json({ isError: true }); } // 传递参数并执行创建文件夹函数 createFolder(name, last_name); res.status(200).json({ isError: false }); } catch (error) { console.error('保存信息或创建文件夹出错:', error); res.status(500).json({ isError: true }); } }; // 接收参数创建文件夹 const createFolder = (name, last_name) => { const dir = `./tmp/${name}-${last_name}`; // recursive: true 自动创建不存在的上级目录 if (!fs.existsSync(dir)) { fs.mkdirSync(dir, { recursive: true }); } };
内容的提问来源于stack exchange,提问作者itt
相关产品推荐
相关产品推荐

