Node.js 10中[DEP0079]弃用警告的溯源方法咨询
定位Node.js [DEP0079]弃用警告的实用方法
我之前升级到Node 10时也碰到过一模一样的[DEP0079]警告,给你几个亲测有效的办法来追踪源头:
先确认命令行参数的使用位置
你提到用了--trace-warnings和--trace-deprecation但没效果,大概率是参数放错位置了!Node的命令行参数必须放在脚本文件名之前,比如正确的写法是:node --trace-deprecation --trace-warnings your-app.js如果把参数放在脚本后面,Node会把它们当成脚本的命令行参数,而不是Node自身的配置,自然不会生效。
手动捕获警告并打印完整调用栈
如果上面的参数还是没给出有用信息,直接在你项目的入口文件最顶部加上这段代码,强制捕获所有警告并输出完整调用栈:process.on('warning', (warning) => { console.error('=== 捕获到弃用警告 ==='); console.error(warning.name); console.error(warning.message); console.error(warning.stack); });运行代码后,你就能看到警告触发的完整调用链,精准定位到是自己的代码还是某个第三方依赖包的问题。
排查依赖包并修复
这个警告几乎都是因为代码(或依赖)使用了废弃的自定义.inspect()方法。根据上面的调用栈找到对应的文件后:- 如果是你自己的代码:把原来的
.inspect()方法替换成Node 10+推荐的util.inspect.custom符号。比如:// 旧写法(已废弃) const myObj = {}; myObj.inspect = () => 'Custom Object'; // 新写法(官方推荐) const util = require('util'); const myObj = {}; myObj[util.inspect.custom] = () => 'Custom Object'; - 如果是第三方依赖:查看该包的npm页面,看看有没有更新版本已经修复了这个弃用问题。如果没有,也可以考虑提交PR或者用patch工具(比如patch-package)手动修复依赖包中的代码。
- 如果是你自己的代码:把原来的
内容的提问来源于stack exchange,提问作者mateos
相关产品推荐
相关产品推荐

