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

使用module.exports导出checkNested时为何报not a function错误?

问题原因分析

你目前使用的是 CommonJS 规范的命名导出语法,错误是导入方式不匹配导致的:当你使用 module.exports.checkNested = checkNested 导出时,导出的整体是一个结构为 { checkNested: 你的函数 } 的对象,如果导入时直接用 const checkNested = require('xxx') 拿到的是这个对象而非函数,调用时就会抛出checkNested is not a function错误。

对应解决方案
  • 方案1:导入时解构导出对象
    你现在的导出逻辑不需要改动,导入时用解构语法取出对应方法即可:
// 替换为你实际的模块文件路径
const { checkNested } = require('./你的模块文件名');
// 后续可正常调用 checkNested 方法
  • 方案2:修改为默认导出
    如果你的模块仅需要导出 checkNested 这一个方法,可以把导出逻辑修改为默认导出:
// 模块内的导出代码改为如下
module.exports = checkNested;

导入时直接赋值即可:

const checkNested = require('./你的模块文件名');
额外优化建议

你的递归方法目前缺少 null 边界判断,如果传入的属性链中间值为 null,会抛出 TypeError 错误,可做如下优化:

function checkNested(obj, level, ...rest) {
  if (obj === undefined || obj === null) return false;
  // 用 Object 原型方法调用更安全,避免目标对象改写了 hasOwnProperty 方法
  if (rest.length == 0 && Object.prototype.hasOwnProperty.call(obj, level)) return true;
  return checkNested(obj[level], ...rest);
}

内容的提问来源于stack exchange,提问作者Sandra Schlichting

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 12:09:02