开发掉坑(一)tar命令解压文件覆盖源文件
今天在编译机上编译前端代码,报了找不到依赖的异常。检查后发现是node_modules/.bin
下少了一些文件。
一开始疑惑为什么本地能成功生成软链在node_modules/.bin
,服务器上面却不行呢?
带着疑惑检查了一遍shell脚本,发现原来在安装依赖的时候有一个坑。
安装依赖的过程如下:
- 执行
npm i
安装依赖 - 解压编译好的二进制依赖到
node_modules
下
问题就出在第二步,使用tar -zxvf xxx.gz -C node_modules
解压文件,会把同名的源文件覆盖掉,导致第一步生成的.bin被覆盖了。
解决后,思考了一下以后如何避免这种问题:
- 使用了解不深的技术时,要详细阅读api文档,清楚调用它会带来什么结果。
- 测试要到位,这次是之前改了编译逻辑,没有覆盖测试,导致遇到这个难以察觉的bug。
- 排查问题时,本地环境要与服务器环境一致,要一步步debug推进,看看究竟是拿一步出问题。