nodejs 文件系统错误代码是否可靠跨平台?

Are nodejs filesystem error codes reliable cross-platform?

如果我运行以下内容:

require('fs').readFile('C:/music/sound.wav')
  .then(buff => console.log(`Got ${buff.length} bytes of music`))
  .catch(err => console.log(`Error: ${err.code}`));

而我在 windows 上,缺少 C:/music/sound.wav ,我将点击错误处理程序,并了解 err.code 等于至 'ENOENT' (which means "error no entry" / "file not found").

我可以使用 err.code 以跨平台可靠的方式执行错误处理吗? linux 和其他操作系统是否也会使用完全相同的字符串指示“找不到文件”?一般来说,err.code 值在操作系统之间是否一致?

In general, are err.code values consistent across OSes?

是的。

如果您查看 fs 模块的一个实现文件,例如 rimraf.js,这是非常跨平台的代码,您会看到对代码的各种逻辑引用,例如 'ENOTEMPTY'、'EEXIST'、'EPERM'、'EBUSY'、'EMFILE'、'ENFILE'、'ENOENT'、'EISDIR' 等。 . 这表明 nodejs 跨平台 fs 代码本身正在以假定它们是跨平台的方式使用错误代码。

那个特定的 rimraf.js 文件对 ENOENT 进行了 5 次单独的比较,表明它确实以跨平台的方式使用了该错误代码。