问题

之前去拉取人家网站的分页数据导出成excel,提到

一开始就用了node做了一个本地功能然后用上 pkg 的插件做一个跨端的打包功能
后来版本bug 更新多,加上excel4node 在win10打包后闪退,日志不能随时查看到(使用端是别人)
所以考虑做个服务端,随时更新重启,随时查看日志

解决过程

前几天发现网站接口貌似升级过了,然后我重新着手排查了这个问题,最后找到原来是windows没有原生支持 bash 命令,但是git cmd是支持的,所以这个问题windows下开发时候没有察觉,打包后调用了默认cmd就闪退。

然后查了很多,下载bash需要开启 Windows Linux 子系统 (WSL),或者安装一些软件设置系统路径。换个思路 写batch 又不会写。

后来想了下,既然我bash里只有curl 命令,那我直接调用curl就行了,查了下windows可以下载curl的可执行文件,果然下载后支持node 用 childprocess 去调用。

然后又碰到了坑点,就是
1、linux、mac的curl里换行符是 \ , windows 好像是 ^
2、linux、mac的curl里字付串是用单引号,嵌套字符串里面包着双引号, 然后windows好像是只支持双引号,里面双引号用斜杠转义。

结果

1
module.exports = (time) => `curl.exe -k "https://xxx.com/v1/list" -H "authority: xxx.com" -H "accept: */*" -H ...

最后就全局把 shell 脚本引号替换,删除换行,调用成功。 到此pkg打包的exe,和curl.exe放在同一个目录下,就能正确执行了。

解决问题还是要多排查,并且练好基本功啊!!不然就 stuck 了 !!