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

ERR_REQUIRE_ESM报错:require()不支持加载ES模块该如何解决?

报错原因与解决方案

该报错为CommonJS规范的代码使用require()引入了仅支持ESM规范的normalize-url依赖包导致:normalize-url v7及以上版本为纯ESM包,不再兼容CommonJS的require()调用。

可行解决方案

  • 方案1:降级normalize-url到支持CommonJS的版本,改造成本最低。
    执行以下命令重新安装依赖:
    npm uninstall normalize-url
    npm install normalize-url@6
    
    安装完成后原有require()调用代码无需修改即可正常运行。
  • 方案2:保留高版本normalize-url,替换require()为动态import()调用。
    Node.js 14.13.0及以上版本支持在CommonJS代码中使用异步动态导入,原有代码:
    const normalizeUrl = require('normalize-url')
    
    替换为:
    // 顶层调用可直接使用顶级await,放在普通函数内时需给函数添加async关键字
    const normalizeUrl = (await import('normalize-url')).default
    
  • 方案3:全项目切换为ESM规范。
    若计划整体升级项目到ESM规范,可执行以下操作:
    1. 在项目根目录package.json中添加配置:"type": "module"
    2. 把项目内所有require()调用统一替换为ESM的import语法,示例:
    import normalizeUrl from 'normalize-url'
    
    1. 所有相对路径导入语句补全文件后缀,例如import './utils'需修改为import './utils.js'

注意:不要手动修改node_modules目录下normalize-url包的package.json删除"type": "module"配置,该修改会在下次重新安装依赖时被覆盖,无法持久生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 13:36:07