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

React项目utils文件引入moment导出formatDate时触发导入编译错误

问题根因与修复方案

核心报错原因

导出识别失效的本质是CommonJS 导出语法与项目默认的 ES Module 模块规范混用,和第三方库本身没有直接关联:

  • 你在 utils 文件中使用了 CommonJS 规范的exports.formatDate = xxx写法,同时又搭配了 ESM 规范的import moment from 'moment'语法,本身就存在模块规范不匹配的问题
  • 当文件中没有引入第三方库时,打包器会触发简易的 CJS 兼容兜底逻辑,自动把挂载在exports上的属性转成可被import { formatDate }识别的结构,此时代码可以正常运行
  • 一旦文件中引入了第三方依赖,打包器的静态分析流程会触发严格的 ESM 模块结构校验规则,不再走 CJS 兼容兜底逻辑,直接因为找不到符合 ESM 规范的formatDate导出,抛出导入错误
  • 直接在 React 组件中编写第三方库调用逻辑不会报错,是因为组件文件本身是标准的 ESM 模块结构,不存在导出规范不匹配的问题,自然不会触发校验报错

修复方法

把 utils 文件内的 CommonJS 导出写法替换为标准的 ESM 命名导出即可,修改后的代码如下:

import moment from 'moment';

export const formatDate = (format, date) => {
  return moment(date).format(format);
}

修改完成后,其他模块通过import { formatDate } from 'src/utils'的方式即可正常识别导出,不会再触发编译报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.26 12:15:03