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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 07:17:39