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,如下图所示: alt

3、问题原因及解决方案

问题出现的原因在于代码设计的时候没有考虑好,cloc命令中的根目录获取都是每次直接获取当前命令行所在的目录, 而当使用cd之后再使用cloc时获取到的根目录就不是项目真正的根目录了。

解决方案:在项目启动的时候就用一个变量存好当前根目录, 而不是每次重新读取根目录。

代码修改记录如下: alt

修改之后的代码: alt

4、最后总结

有些需要在项目初始化就确定的变量应该初始化的时候就用const赋值常量, 后续不再重复读取而是直接返回这个常量。