项目初始化bug解决实录
1、问题背景
本周基于JavaScript的node.js做了个命令行程序,本人实现了三个命令:
- ls:列举出当前工作目录下的所有文件和目录。
- cloc:列举出给定文件或者文件夹的代码统计结果(注释行数、代码行数、空行数、文件总数)等信息。
- wget:根据给定的URL下载文件。
另外命令行程序已经实现了以下的命令(老师提供的):
cd
:目录切换cls
:清屏exit
:退出交互
2、问题描述
ls、cloc、wget三个命令单独使用的时候都没有问题,但是当在使用cloc命令之前曾使用cd命令改变当前目录时, 系统会报错: Trace: Error: ENOENT: no such file or directory
,如下图所示:
3、问题原因及解决方案
问题出现的原因在于代码设计的时候没有考虑好,cloc命令中的根目录获取都是每次直接获取当前命令行所在的目录, 而当使用cd之后再使用cloc时获取到的根目录就不是项目真正的根目录了。
解决方案:在项目启动的时候就用一个变量存好当前根目录, 而不是每次重新读取根目录。
代码修改记录如下:
修改之后的代码:
4、最后总结
有些需要在项目初始化就确定的变量应该初始化的时候就用const赋值常量, 后续不再重复读取而是直接返回这个常量。