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

Node.js TypeScript项目使用serialize-error包报错求解决方案

问题根因

serialize-error@8及以上版本为纯ESM包,不再提供CommonJS格式的构建产物,和你当前tsconfig中配置的"module": "commonjs"规则完全不兼容,这是报错的核心原因。
serialize-error引入报错截图

解决方法

根据项目实际情况二选一即可:

  • 方案1:零配置改动,降级包版本
    优先选这个方案,迁移成本为0。直接安装最后一个支持CommonJS的稳定版本,完全适配你当前的es5+commonjs构建规则,覆盖绝大多数常用的错误序列化场景:
    npm install serialize-error@7.0.1
    # yarn 用户执行 yarn add serialize-error@7.0.1
    # pnpm 用户执行 pnpm add serialize-error@7.0.1
    
    安装完成后正常引入使用即可,模块解析报错会直接消失。
  • 方案2:调整项目配置适配高版本ESM包
    如果你需要用到高版本serialize-error的新特性,按以下步骤修改配置:
    1. 升级本地TypeScript版本到4.7及以上,低版本不支持ESM对应的模块解析规则。
    2. 修改tsconfig.json的compilerOptions配置,调整模块相关规则,同时把过低的target版本升级(es5不支持ESM基础特性),修改后配置参考:
    "compilerOptions": {
      "outDir": "dist",                       
      "rootDir": "src",
      "target": "es2020",
      "lib": ["ES2020"],                                  
      "allowJs": false,                             
      "experimentalDecorators": true,                  
      "module": "NodeNext",                               
      "moduleResolution": "NodeNext",                      
      "resolveJsonModule": true,                        
      "esModuleInterop": true,                             
      "strict": true
    }
    
    1. 在项目根目录的package.json中添加"type": "module"字段,标记项目遵循ESM模块规范。

    注意:切换为ESM模式后,原CommonJS环境下的全局变量require、__dirname、__filename、module.exports等都无法直接使用,老项目迁移需要额外做兼容处理,成本较高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 03:03:25