需要在代码里贴文件路径时,因为路径比较复杂,选择了从属性-安全面板里复制文件绝对路径。
粘贴到vscode里后看起来一切正常。
但是,使用Node.js的fs.readFileSync()读取这个路径时,路径前面被自动补了一个相对路径前缀。也就是隐式调用了path.resolve()。
按理说,fs.readFileSync()判断是绝对路径时是不会隐式补全的,很奇怪。
之后偶然把路径再复制到cmd里才发现,路径前面多了一个隐藏的Unicode字符,在vscode中不可见,但实际被解析器读取,判断为非绝对路径,自动进行补全。
使用其他方式复制路径后就没有这个问题了。
总结
在出现类似的路径问题时,可以先检查下路径中是否包含了隐形Unicode字符。