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 次单独的比较,表明它确实以跨平台的方式使用了该错误代码。
如果我运行以下内容:
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 次单独的比较,表明它确实以跨平台的方式使用了该错误代码。