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

如何在CommonJS模块中导入ESM格式的Got库?遇Not Supported错误

问题根源

你这问题核心出在两点:

  1. Node.js版本不兼容:Got 13.0.0是纯ESM库,官方要求Node.js至少14.16.0,你用的12.14.1版本根本达不到最低要求,这是报错的主要原因;
  2. 就算Node版本够,Node.js 12里CommonJS用动态import()还是实验性功能,得额外配置才行。
解决办法

办法1:降级Got到支持CommonJS的版本(最省事)

Got 11及更早版本同时支持CommonJS和ESM,直接装旧版本就行,不用改项目结构:

npm install got@11

之后直接用CommonJS的方式引入:

const got = require('got');

办法2:升级Node.js+适配动态import(想用Got 13的话)

  1. 先把Node.js升到14.16.0或更高版本,满足Got 13的要求;
  2. 在CommonJS里用动态import()时,要手动提取ESM的默认导出:
HTTPRequestV2.prototype.init = async function(){
    const gotModule = await import('got');
    wrappedgot = gotModule.default; // ESM库的默认导出得单独拿出来
};

Node 14及以上不用加额外启动flag,动态import已经稳定支持了。

办法3:用包装文件中转(没法升级Node的情况)

如果实在不能升级Node,就建个ESM包装文件(比如got-wrapper.mjs):

import got from 'got';
export default got;

然后启动Node的时候加--experimental-modules flag:

node --experimental-modules 你的入口文件.js

代码里这么写:

HTTPRequestV2.prototype.init = async function(){
    wrappedgot = await import('./got-wrapper.mjs').then(m => m.default);
};

不过这种方式在Node 12里可能有稳定性问题,尽量优先选前两种办法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 12:35:19