#3673·jshint

jshint 扔出了一个 DeprecationWarning - 向 fs.existsSync 传递无效的参数类型已被弃用

作者: DinoChiesa创建于 2026年3月1日更新于 2026年3月1日

堆栈跟踪如下:

(node:1524) [DEP0187] DeprecationWarning: Passing invalid argument types to fs.existsSync is deprecated
    at Object.existsSync (node:fs:281:15)
    at exports.exists (/home/me/dev/myproj/node_modules/jshint/src/fs-utils.js:13:13)
    at getHomeDir (/home/me/dev/myproj/node_modules/jshint/src/cli.js:111:17)
    at findConfig (/home/me/dev/myproj/node_modules/jshint/src/cli.js:82:14)
    at Object.getConfig (/home/me/dev/myproj/node_modules/jshint/src/cli.js:518:52)
    ...

显然,cli.js 文件中包含了解析主目录的逻辑。 这似乎只在 Linux 上才会出现。 诊断结果显示了以下代码:

function getHomeDir() {
  var homePath = "";
  var environment = global.process.env;
  var paths = [
    environment.USERPROFILE,
    environment.HOME,
    environment.HOMEPATH,
    environment.HOMEDRIVE + environment.HOMEPATH
  ];

  while (paths.length) {
    homePath = paths.shift();
    if (fsUtils.exists(homePath)) {
      return homePath;
    }
  }
}

fsUtils.exists() 最终调用了 fs.existsSync,从而触发了 DeprecationWarning。 这将在 environment.USERPROFILE 不存在的情况下发生 ...这在 Linux 上是很常见的。