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无法正确获取导出的函数。
解决步骤:- 执行
npm install moment安装依赖; - 在ppfUtil.js顶部添加
const moment = require('moment');。
- 执行
文件路径或大小写不匹配
严格核对文件位置与名称:- 确认两个文件在同一目录下,若npsUtil在子目录,路径需改为
../ppfUtil; - 检查文件名大小写(Linux/macOS系统区分大小写),比如ppfUtil.js是否实际写成了PPFUtil.js或ppfutils.js。
- 确认两个文件在同一目录下,若npsUtil在子目录,路径需改为
存在循环引用
如果ppfUtil.js中也require了npsUtil.js,会形成循环依赖,导致模块加载时导出未完成,npsUtil拿到的ppfUtil模块不包含目标函数。
解决:检查ppfUtil代码,移除对npsUtil的引用,或调整依赖结构。换导入方式排查
暂时修改npsUtil的导入代码,改用非解构方式:const ppfUtil = require('./ppfUtil'); // 调用时用ppfUtil.getRetirementYear(...)如果这样能正常调用,说明之前的解构环节因模块加载异常导致获取失败,再回头排查模块加载的问题。
内容的提问来源于stack exchange,提问作者Jayesh Adwani
相关产品推荐
相关产品推荐

