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

NextJS中src/util函数导入导出正常却报getRetirementYear未定义

解决TypeError: getRetirementYear is not a function问题

问题场景

以下是涉及的代码文件:
npsUtil.js

const { getRetirementYear } = require('./ppfUtil');

ppfUtil.js

const getRetirementYear = (dateOfBirth, retirementAge) => {
  const birthDate = moment(dateOfBirth);
  const birthYear = birthDate.year();
  const retirementYear = birthYear + +retirementAge;
  return retirementYear;
};

module.exports = {
  getRetirementYear
}

在npsUtil中调用getRetirementYear时,出现TypeError: getRetirementYear is not a function错误,尝试修改路径、添加文件扩展名均无效。

可能的原因及解决办法

  • moment库未安装或未引入
    ppfUtil代码里使用了moment但未引入该模块,也未确认依赖是否安装,这会导致ppfUtil模块加载失败,进而npsUtil无法正确获取导出的函数。
    解决步骤:

    1. 执行npm install moment安装依赖;
    2. 在ppfUtil.js顶部添加const moment = require('moment');。
  • 文件路径或大小写不匹配
    严格核对文件位置与名称:

    • 确认两个文件在同一目录下,若npsUtil在子目录,路径需改为../ppfUtil;
    • 检查文件名大小写(Linux/macOS系统区分大小写),比如ppfUtil.js是否实际写成了PPFUtil.js或ppfutils.js。
  • 存在循环引用
    如果ppfUtil.js中也require了npsUtil.js,会形成循环依赖,导致模块加载时导出未完成,npsUtil拿到的ppfUtil模块不包含目标函数。
    解决:检查ppfUtil代码,移除对npsUtil的引用,或调整依赖结构。

  • 换导入方式排查
    暂时修改npsUtil的导入代码,改用非解构方式:

    const ppfUtil = require('./ppfUtil');
    // 调用时用ppfUtil.getRetirementYear(...)
    

    如果这样能正常调用,说明之前的解构环节因模块加载异常导致获取失败,再回头排查模块加载的问题。

内容的提问来源于stack exchange,提问作者Jayesh Adwani

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 10:42:42