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

dateformat@4.5.1 npm包在Node服务器重启时报require加载ES模块错误

原始报错翻译:服务端必须使用import语法加载ES模块,通过require()加载ES模块的操作不被支持,报错文件路径:usr/src/app/nodemodules/dateformat/lib/dateformat.js

报错原因

dateformat 从4.0.0版本开始正式改为纯ESM(ECMAScript 模块)包,不再支持CommonJS规范的require()语法引入,你当前的项目使用CommonJS规范加载该包,就会触发该报错。

解决方案

以下三种方案按需选择即可:

  • 方案1:项目切换为ESM规范
    在项目根目录的package.json文件中新增配置项:

    "type": "module"
    

    同时把原来引入dateformat的代码从const dateFormat = require('dateformat')改为ES导入语法:

    import dateFormat from 'dateformat'
    

    其余业务代码无需改动即可正常运行。

  • 方案2:降级dateformat到支持CommonJS的版本
    dateformat最后一个兼容CommonJS的版本为3.0.3,直接卸载现有版本后安装指定版本即可:

    npm uninstall dateformat
    npm install dateformat@3.0.3
    

    安装完成后原有require()引入代码无需修改即可正常使用。

  • 方案3:CommonJS项目中使用动态import引入
    如果不想改动项目规范也不想降级包,可以用动态import语法异步加载该ESM包:

    // 异步函数内使用
    async function yourFunction() {
      const { default: dateFormat } = await import('dateformat')
      // 后续正常调用dateFormat方法即可
    }
    

    注意该方式引入的包只能在异步逻辑内使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 18:09:04