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

React+TypeScript项目中如何动态导入moment.js并解决调用报错问题

Moment动态导入报错解决方案

错误根因

你在获取默认导出时额外多执行了一次调用:
(await import('moment')).default()末尾的括号是多余的,import('moment')返回的模块对象中,default属性本身就是Moment构造函数,直接执行default()会得到一个Moment实例,实例无法作为函数再次被调用,因此抛出Type Moment has no call signatures报错。
你的猜测修改方向是错误的,原有后续调用moment(currentNb).valueOf()的逻辑不需要改动,只需要修正导入语句即可。

正确写法

const myFn = async (currentNb) => {
   // 去掉default后的括号,直接取构造函数
   const moment = (await import('moment')).default          
   const dateUnix: number = moment(currentNb).valueOf()
   // 其余原有逻辑保持不变
}

TypeScript环境补充

如果是TS项目,为了保证类型提示正确,可以在文件顶部添加类型导入:

import type moment from 'moment'

也可以直接给动态导入的变量增加类型标注:

const moment: typeof import('moment').default = (await import('moment')).default

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 08:06:03