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

Node.js中require导入into-stream报ERR_REQUIRE_ESM错误如何解决

相关代码
const express = require('express');
const app = express();
const cors = require('cors');
const mongoose = require('mongoose');
const multer = require('multer');
const inMemoryStorage = multer.memoryStorage();
const uploadStrategy = multer({ storage: inMemoryStorage }).single('image');
const { BlockBlobClient } = require('@azure/storage-blob');
const getStream = require('into-stream');
报错信息

Node.js环境下使用require()语法导入into-stream模块时触发ESM兼容报错:

Error [ERR_REQUIRE_ESM]: require() of ES Module

在package.json中添加type: module配置后,原有CommonJS规范的require()语法无法正常运行。

可行解决方案

两种方案二选一即可,无需同时操作:

  • 保留现有CommonJS代码结构(无需修改原有require语法)
    into-stream从v6.0.0版本开始迭代为纯ESM包,不再对CommonJS的require()语法提供支持。如果不想调整现有代码的模块规范,直接安装支持CommonJS的最终稳定版本即可:
    npm install into-stream@5.1.1
    
    安装完成后原有代码不需要任何改动,可以直接正常运行。
  • 切换项目为ESM规范(可使用into-stream最新版本)
    如果需要使用into-stream的高版本特性,可以把项目整体切换为ESM模块规范:
    1. 在package.json中添加配置项:"type": "module"
    2. 将项目内所有require()导入语句替换为ESM的import语法,示例:
      import getStream from 'into-stream';
      import express from 'express';
      import cors from 'cors';
      // 其余依赖按相同规则替换即可
      

    注意:ESM规范下没有CommonJS内置的__dirname、__filename变量,如果代码中用到路径相关的全局变量,需要通过path模块搭配fileURLToPath方法自行实现。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 01:51:24