Nest报错:axiosError: unexpected end fo file解决方法

405 阅读2分钟

背景介绍

事件的主角是我们的Nest项目。这个项目其实是一个飞书应用,主要用于拓展飞书文档和机器人能力。

先说原因,是axios 1.2.X版本包的问题,降版本可以解决。具体点这里

下面由我来详细讲讲自己的心路历程~

事件开端

前两天部署了新内容之后,今天猛然发现定时写入的文档更新时间停留在了两天前。。。顿觉五雷轰顶,于是开始紧锣密鼓的排查。

开始推理

打印输出了一波,最终目标锁定在这个方法上:

tu1.png 这个方法作用是调用飞书接口获取表格记录。在本地执行后,可以看到,在输出150行的内容之后,进程就消失了,接口也直接返回了500。

tu2.png

(并且没有捕获到异常)

这里走了个弯路,我以为是飞书的问题(经常误会飞书)。但是开放平台调试api又是没问题的。当时我已经懵逼了。

出现转机

排除其他可能性之后,开始觉得是Rxjs库的问题。由于之前不太熟悉,这个项目也是现写现学的。所以打算换个简单的写法试试,调整了一下代码,并且直接return了一个空对象:

tu3.png 调试输出:

tu4.png 居然是axios包报了个错,难怪原先的方式捕获不到错误,但是又中止了请求。但是这个报错内容我也是一脸懵逼。。。

搜了下axios的issue(开源包问题优先找issue~),还真搜到了点这里。大概是说因为1.2.X版本的问题。

真相大白

对比了自己的lock文件,新的:

tu6.png 旧的:

tu7.png 可以看到是因为@nestjs/axios从0.1.0升级到了0.1.1,所以更新了依赖包。。。

锁死 0.1.0 版本即可解决问题。

tu5.png 这个老哥可以说和我是一模一样了。[捂脸]