如何解决测试中出现的ENOENT: no such file or directory, open 'node:stream'错误?
修复Jest中无法识别
node:stream的问题 这个错误是因为Jest(或你的Node.js环境)不支持Node.js的node:协议式导入语法,以下是具体修复方案:
方案1:升级Node.js版本
node:协议是Node.js v14.13.0正式引入的特性,如果你的测试环境Node版本低于这个版本,直接升级到v14.13.0或更高的稳定版即可解决。
方案2:升级Jest及相关依赖
旧版本的Jest(比如27.x之前的版本)没有对node:协议导入做适配,会把它当成普通文件路径去查找。你需要:
- 升级Jest到最新稳定版:
npm install jest@latest --save-dev - 如果用TypeScript,同步升级
ts-jest和@types/jest:npm install ts-jest@latest @types/jest@latest --save-dev
方案3:临时替换导入语法(兼容旧环境)
如果暂时无法升级依赖,可以把代码里的协议式导入替换成传统核心模块导入,两者在Node.js v14+功能完全一致:
- 原代码:
import { Writable } from 'node:stream' - 修改后:
import { Writable } from 'stream'
方案4:配置Jest的模块映射
如果升级后仍有问题,可在jest.config.js(或jest.config.ts)中添加模块映射规则,让Jest把node:开头的模块映射为对应的核心模块:
module.exports = { // 其他已有配置 moduleNameMapper: { '^node:(.+)$': '$1' } }
内容的提问来源于stack exchange,提问作者Kenn Jones
相关产品推荐
相关产品推荐

