为何path.resolve传字符串参数输出绝对路径,传变量则输出相对路径?
问题:为何
absoluteWithStrings输出绝对路径,但absoluteWithVars却输出相对路径? 示例代码
const path = require('path') const file = path.join('/content', 'subfolder', 'first.txt') const absoluteWithStrings = path.resolve(__dirname, 'content', 'subfolder', 'first.txt') const absoluteWithVars = path.resolve(__dirname, file) console.log(file) console.log(absoluteWithStrings) console.log(absoluteWithVars)
原因解释
核心是path.resolve的解析规则:它从右往左处理参数,一旦遇到以斜杠开头的绝对路径片段,就会直接以这个片段作为最终路径,忽略前面所有参数。
具体到代码逻辑:
file通过path.join生成的结果是/content/subfolder/first.txt,这是一个绝对路径(开头带斜杠)。- 执行
path.resolve(__dirname, file)时,resolve优先识别右侧的file为绝对路径,直接返回它,完全跳过了前面的__dirname。 - 而
absoluteWithStrings的参数都是相对路径片段(content、subfolder等无前置斜杠),所以resolve会将它们与__dirname拼接成完整的绝对路径。
内容的提问来源于stack exchange,提问作者brunshte
相关产品推荐
相关产品推荐

