首次执行npm i正常,再次执行出现Bluebird的JSON循环结构转换错误
解决npm install重复执行时的Bluebird循环引用JSON序列化错误
嘿,我之前也碰到过类似的坑!结合你给出的报错堆栈——能看到是全局安装的Bluebird在搞事情,这种重复执行npm install出问题的情况,大概率是全局包和npm内置依赖版本冲突导致的,咱们一步步来解决:
先确认问题根源
首先执行这个命令检查全局是否真的装了Bluebird:
npm list -g bluebird
如果返回了全局安装的Bluebird信息,那基本实锤了:npm自身已经内置了适配的Bluebird版本,全局安装的第三方版本和内置版本不兼容,导致进程通信时出现了循环引用的对象,触发了JSON.stringify的报错。
具体解决步骤
移除全局Bluebird
直接卸载全局的Bluebird,因为npm本身已经自带了适配的版本,全局安装完全是画蛇添足:npm uninstall -g bluebird清理npm缓存与本地依赖文件
残留的缓存和锁文件可能还留着冲突的依赖信息,一起清理掉:# 强制清理npm缓存 npm cache clean --force # 删除本地依赖文件夹 rm -rf node_modules # 删除依赖锁文件 rm package-lock.json重新执行npm install
现在再跑npm install,应该就能正常完成依赖安装了。
后续预防建议
- 尽量不要全局安装和npm内置依赖同名的工具库(比如Bluebird、lodash这类常用包),很容易引发版本冲突。
- 如果确实需要临时使用Bluebird这类工具,用
npx临时调用就行,不用全局安装:npx bluebird your-script.js
你遇到的报错信息:
$foo/my-node-project npm install /usr/local/lib/node_modules/npm/node_modules/bluebird/js/release/async.js:61 fn = function () { throw arg; }; ^ TypeError: Converting circular structure to JSON at JSON.stringify (<anonymous>) at process.target._send (internal/child_process.js:686:23) at process.target.send (internal/child_process.js:597:19) at callback (/us...
内容的提问来源于stack exchange,提问作者christopherbalz
相关产品推荐
相关产品推荐

