macOS执行npm update后打开终端出现EPIPE报错的原因与修复方法
macOS执行npm update后新开终端报Node.js EPIPE错误修复
报错信息
node:events:505 throw er; // Unhandled 'error' event ^ Error: write EPIPE at afterWriteDispatched (node:internal/stream_base_commons:160:15) at writeGeneric (node:internal/stream_base_commons:151:3) at Socket._writeGeneric (node:net:823:11) at Socket._write (node:net:835:8) at writeOrBuffer (node:internal/streams/writable:390:12) at _write (node:internal/streams/writable:331:10) at Writable.write (node:internal/streams/writable:335:10) at SafeSubscriber._next (/usr/local/lib/node_modules/@angular/cli/node_modules/@angular-devkit/core/node/cli-logger.js:52:20) at SafeSubscriber.__tryOrUnsub (/usr/local/lib/node_modules/@angular/cli/node_modules/rxjs/internal/Subscriber.js:205:16) at SafeSubscriber.next (/usr/local/lib/node_modules/@angular/cli/node_modules/rxjs/internal/Subscriber.js:143:22) Emitted 'error' event on Socket instance at: at emitErrorNT (node:internal/streams/destroy:151:8) at emitErrorCloseNT (node:internal/streams/destroy:116:3) at process.processTicksAndRejections (node:internal/process/task_queues:82:21) { errno: -32, code: 'EPIPE', syscall: 'write' } Node.js v18.2.0
当前环境版本
npm -v 8.12.1 node -v v18.2.0
问题原因
执行npm update后,全局安装的@angular/cli版本与Node.js v18.2.0存在兼容性冲突,同时Angular CLI相关命令被异常写入终端shell启动配置文件,每次新开终端会自动触发Angular CLI的日志输出逻辑,日志写入时遇到管道断开就会抛出未捕获的EPIPE错误。按下回车后终端初始化流程执行完毕,即可正常使用。
修复步骤
- 清理shell启动文件的异常配置
根据使用的shell打开对应配置文件:zsh用户执行open ~/.zshrc,bash用户执行open ~/.bash_profile,查找文件中包含ng、@angular/cli的自启动命令行,删除对应行后保存,执行source ~/.zshrc(bash用户执行source ~/.bash_profile)让配置即时生效。 - 解决版本兼容性问题,两种方案二选一即可:
- 方案1:降级Node.js到16.x LTS版本,该版本与绝大多数旧版Angular CLI兼容性稳定
- 方案2:重装适配Node 18的最新版Angular CLI,依次执行以下命令:
npm uninstall -g @angular/cli npm install -g @angular/cli@latest
- 验证修复
完全退出终端应用后重新打开新窗口,确认不再弹出EPIPE报错即修复完成。
内容的提问来源于stack exchange,提问作者Sergej
相关产品推荐
相关产品推荐

