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 上是很常见的。
内容来源: jshint/jshint