记一次自动格式化的问题

近日接盘了一个几年前的旧项目,由于 VS Code 开启了 Format On Save 选项,保存的时候自动格式化整个文件的代码。
正常情况下格式化代码基本没有任何风险,除非工具有问题,良好的代码格式有利于后面的工作。
在本地测试一切正常,推送到测试服务器运行错误,错误详情:

1
2
3
4
5
6
7
8
9
10
11
SyntaxError: Unexpected token )
at createScript (vm.js:56:10)
at Object.runInThisContext (vm.js:97:10)
at Module._compile (module.js:542:28)
at Object.Module._extensions..js (module.js:579:10)
at Module.load (module.js:487:32)
at tryModuleLoad (module.js:446:12)
at Function.Module._load (module.js:438:3)
at Module.runMain (module.js:604:10)
at run (bootstrap_node.js:390:7)
at startup (bootstrap_node.js:150:9)

错误原因

检查发现格式化的时候,一些比较长模板字符串(Template String)自动换行,并在函数后面加了个逗号。
函数参数列表的尾后逗号是在 ES2017 添加的,从 Node.Js8.0.0 开始支持这一特性。
项目的 Dockerfile 指定了 Node6,本地是 Node10。

解决方法

  • 升级项目中 Node 到 LTS 版本。
  • 使用 eslint + prettier规范代码风格。
  • 去除未使用的代码,少量多次的优化。

写在最后

项目尽量使用 lint 工具统一代码风格,改动成本小,--fix 可以尽可能的帮助我们修复老的代码,提高可读性,从而更容易维护。
没有银弹,完善的单元测试覆盖更重要