运行yo code创建VSCode自定义扩展时遇ERR_MODULE_NOT_FOUND错误求助
解决
yo code运行时ERR_MODULE_NOT_FOUND找不到stream包的问题 问题重现
运行VS Code扩展生成命令yo code时,出现以下错误:
Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'stream' imported from C:\Users\{username}\AppData\Roaming\npm\node_modules\yo\node_modules\mem-fs\dist\index.js at packageResolve (internal/modules/esm/resolve.js:655:9) at moduleResolve (internal/modules/esm/resolve.js:696:18) at Loader.defaultResolve [as _resolve] (internal/modules/esm/resolve.js:810:11) at Loader.resolve (internal/modules/esm/loader.js:88:40) at Loader.getModuleJob (internal/modules/esm/loader.js:241:28) at ModuleWrap.<anonymous> (internal/modules/esm/module_job.js:56:40) at link (internal/modules/esm/module_job.js:55:36)
环境信息:
- 操作系统:Windows 11
- 终端:PowerShell
- generator-code位置:
C:\Users\{username}\AppData\Roaming\npm\node_modules\generator-code
已尝试更换盘符运行、重装包、使用其他生成器,问题依旧。
解决方案
1. 调整Node.js版本
错误核心原因:stream是Node.js核心模块,但在v18+的ESM模式下,导入核心模块必须添加node:前缀,而旧版本mem-fs未遵循该规则,导致Node.js误从node_modules查找stream包。
- 查看当前Node版本:
node -v - 若版本为v18及以上,可降级至v16.x LTS版本:
- 卸载当前Node.js,从官网下载v16.x安装包重新安装;
- 或用nvm(Node版本管理器)切换:
# 安装v16 LTS nvm install 16 # 切换到v16版本 nvm use 16
2. 手动修改mem-fs包代码
不想降级Node版本的话,直接修改mem-fs的导入逻辑:
- 打开文件:
C:\Users\{username}\AppData\Roaming\npm\node_modules\yo\node_modules\mem-fs\dist\index.js - 找到导入
stream的代码行,将:
修改为:import * as stream from 'stream';import * as stream from 'node:stream'; - 保存文件后重新运行
yo code。
3. 用npm overrides强制升级mem-fs
若mem-fs已有修复该问题的新版本,可通过全局npm配置强制更新:
- 打开/创建全局npm配置文件
C:\Users\{username}\.npmrc,添加:
(可通过overrides=mem-fs@^4.0.0npm view mem-fs versions确认最新修复版本号) - 重新全局安装依赖:
npm uninstall -g yo generator-code npm install -g yo generator-code
内容的提问来源于stack exchange,提问作者LuniZunie
相关产品推荐
相关产品推荐

