美文网首页
UnhandledPromiseRejectionWarnin

UnhandledPromiseRejectionWarnin

作者: 前端大飞 | 来源:发表于2017-11-28 18:46 被阅读0次

    不能言喻的痛

    1.一直在做公司的后台业务,因为已有的框架已经很完善了,日常的工作就是维护,升级以及业务。但是,每天在运行npm run dev命令的时候,总会有下面这两行提示,因为业务比较忙,而且因为提示的不友好,尝试处理两次失败后,就一直搁置,今天因为对整个代码库整理,决定先对这个错误提示下刀。

    错误提示
    2.痛点。
    提示太不友好了,大概的意思就是Promise没有catch()处理err。在业务代码中全局搜索了一下,有Promise 63处,都没有处理catch。手动加了一遍,63处还好啦。以为解决掉了,现实是多么的残酷,还在报错。
    高歌一曲:日了狗了。问题肯定就是出现在node_modules下的包代码了,总不能一个个去加上catch了吧。

    3.google万能。
    google了许久,很多类似的错误,但是没人解决啊。

    4.stackoverflow。
    how to find which promises is unhandled in nodejs UnhandledPromiseRejectionWarning?

    看到这位仁兄的方案,在入口加了下面这行代码。

    process.on('unhandledRejection', (reason, p) => {
      console.log('Unhandled Rejection at: Promise', p, 'reason:', reason);
      // application specific logging, throwing an error, or other logic here
    });
    

    终于,终于,看到完整的错误提示了,从来没有看到错误这么亲切过。


    完美

    然后就是定位问题了,很简单的,这个y-server包(公司内部维护的)里有个spawn生成的child.stdout为null,导致了错误。修复之,pr。

    5.总结:

    node 应该是在6版本没有这个问题的,现在我的版本是8.0.0.建议养成习惯,Promise要catch err。

    相关文章

      网友评论

          本文标题: UnhandledPromiseRejectionWarnin

          本文链接:https://www.haomeiwen.com/subject/ylkebxtx.html