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

已使用import仍触发[ERR_REQUIRE_ESM]错误的技术求助

解决Node.js [ERR_REQUIRE_ESM] 报错(已用import仍无效)

问题场景

我写了这段代码:

import { toString } from 'nlcst-to-string';
import { retext } from 'retext';
import retextPos from 'retext-pos';
import retextKeywords from 'retext-keywords';

const sentence = "President Obama woke up Monday facing a Congressional defeat that many in both parties believed could hobble his presidency."

function process(params) {
    // some code
}

exports.main = processComment;

运行后直接报错:

[ERR_REQUIRE_ESM]: Must use import to load ES module

明明已经用了import语法,试过在package.json加"type": "module"、把文件改成.mjs,都没解决。

排查和解决步骤

1. 修正模块导出的混用问题

你代码里用了ES模块的import,但最后导出用的是CommonJS的exports.main,还存在笔误——定义的函数是process,却导出不存在的processComment,这会直接导致模块系统冲突。把导出改成ES模块格式:

// 命名导出
export const main = process;
// 要是想用默认导出就写这个:
// export default process;

2. 检查Node.js版本

retext这类依赖都是纯ES模块,要求Node.js版本至少是14.13.0或者16.0.0以上。先查自己的Node版本:

node -v

版本不够就升级到LTS版,比如18.x或20.x。

3. 排查调用链是否有CommonJS模块

如果项目里还有其他.js文件(没设"type": "module",属于CommonJS)导入了当前这个ES模块,也会触发这个错误。要么把所有文件统一成ES模块,要么在CommonJS文件里用动态导入:

// CommonJS文件里这么导入ES模块
import('./your-es-module-file.mjs').then(module => {
  // 使用模块内容
});

4. 清缓存重装依赖

有时候依赖安装的缓存会搞出奇怪问题,试试清掉重装:

rm -rf node_modules package-lock.json
npm install

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 20:27:25