做程序的,大多应该都知道目前主流系统中,Windows、linux(unix)换行符的差异,最近就因为疏忽,搞了个很没头绪的bug。

写node cli,由于是Windows下开发的,换行符默认CRLF,发布后也可以正常执行,唯独使用mac的兄弟装完发现运行cli命令提示如下错误

env: node\r: No such file or directory

各种调试私活不行,最后偶然发现bin入口文件是CRLF,尝试改为LF,再次发布,一切正常。

这也是第一次受到换行符的影响,因为git提交时配置了自动转LF,这次是因为publish到npm时还没用提交到git仓库,导致换行符出错,直接不被mac系统识别。