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

升级Angular 18后使用moment报错:调用moment提示为命名空间对象非函数

解决Angular 18中moment库调用报错问题

问题原因

Angular 18默认启用了ES模块严格解析模式,原来import * as moment from 'moment'的导入方式会把moment当作命名空间对象而非可调用函数,导致运行时报错。

解决方案

  • 方案1:改用默认导入
    直接修改导入语句为默认导出形式:

    import moment from 'moment';
    

    之后就能正常使用moment(this.to.val, this.validTimeFormats, true).isValid()的调用方式。

  • 方案2:调用命名空间的default属性
    如果不想改动导入语句,可在调用时指定default属性:

    moment.default(this.to.val, this.validTimeFormats, true).isValid()
    

    因为moment的可调用函数实际挂在命名空间对象的default字段上。

  • 方案3:替换为现代日期库(推荐)
    moment已进入维护状态,不再更新。Angular 18更适配符合ES模块规范的现代库,比如date-fns或luxon,这些库天生支持ES模块,不会出现这类导入问题,且体积更小、功能更灵活。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 13:17:03