因为我一直使用 Postman 来管理 API,随着时间的积累,免费版本的额度已经不够使用了。

我现在对管理类工具最基本的要求就是得有同步功能,基于此调研了一番之后目光聚集在了 Postman 和 Paw 上。两者功能差不多,Paw 好像还更好看一点,然后 Paw 是买断制,Postman Pro 是订阅制,权衡了一下,决定试用下 Paw,如果合我意的话就抛弃 Postman 了😂。

Paw 的拓展方式是通过插件来的,比如官方宣称支持 Pastman 数据迁移,实际使用中是通过一个叫 Postman 1.0 Importer 的插件来实现的。

二话不说,先导入一番试试,数据源是 Postman (7.0.9),然后就很悲催的报错了。

Import Failed
A JavaScript exception was raised. Open the Extension Console (under the Window menu) for more information.

TypeError: undefined is not an object (evaluating '(req.headers).split')

这个让我很尴尬啊,不过一点点的错误怎么会难倒我呢,有异常先看日志。

JS Error @parser error TypeError: undefined is not an object (evaluating '(req.headers).split') {"line":102210,"column":45} _extractHeaders
_extractParameters
_createRequest
_importCollection

reduce@[native code]
_createContext
parse
createRequestContexts
_import

JS Exception Line 102210. TypeError: undefined is not an object (evaluating '(req.headers).split')

看错误是解析错误,那就应该是插件包过时了,毕竟最后一次更新是 2017 年了,Postman 导出的数据结构应该发生了变化。

找到插件对应的源文件:~/Library/Containers/com.luckymarmot.Paw/Data/Library/Application\ Support/com.luckymarmot.Paw/Extensions/com.luckymarmot.PawExtensions.PostmanImporter/PostmanImporter.js

对比数据源文件和解析文件简单调试一番后,解决方案也很简单:

把 102210 行

var headerLines = (req.headers).split('\n');

改成

var headerLines = (req.headers || '').split('\n');

成功导入,开启试用旅程。

了解到 Paw 是一位个人开发者的项目,在 V2EX 上还看到过作者回复相关问题,也看到大家对该项目的评价,应该还是靠谱的一个人,弃坑风险不大,但考虑作者精力问题,我也不知道它能坚持多久,后续走向如何,但是还是给他点赞,正是这样的优秀的开发者才能让我们体验到各种优秀的产品,丰富研发生态。

我也还没购买,还处于试用阶段,Postman 还是我的主力 API 管理工具。

如果你也因为迁移数据遇到了类似的问题,希望能给你一点帮助,不要因此放弃😄。

本文由程小白创作,本文可自由转载、引用,但需署名作者且注明文章出处。

原文地址:https://www.chengxiaobai.cn/record/paw-failed-to-import-postman-data.html