1. path.join和path.resolve的区别
path.join
- 拼接路径
- 能够识别 \
path.resolve
- 从当前的执行路径,解析出绝对路径
- 不能识别 \ ,会被当成根路径
注意下面的例子,是从当前的执行路径,解析出绝对路径
使用 process.cwd() 可以获取当前的执行路径
const path = require('path');
// 拼接路径
console.log('拼接路径', path.join('a', 'b', '/c'));
// 解析出绝对路径
console.log('解析路径', path.resolve('a', 'b', 'c'))
使用path.resolve 如果待拼接字符串有 /,那么会解析出根路径
2. 使用__dirname
按照上述例子使用path.resolve,会从执行路径开始解析,但是当我们的js文件不在根目录(也就是默认的执行路径)时,就会出错。我们希望从当前文件的路径开始解析。所以可以加上 __dirname
同样的拼接路径的方法 path.join也可以使用__dirname 开始拼接,此时得到的结果和path.resolve一致(不考虑是否有斜杠 \ 的情况)
3. 切换当前的执行路径
在上面的例子中,直接点击 run code按钮,使用process.cwd() 获取的执行路径是根目录,而不是当前文件的路径,那么我们可以使用终端terminal 来切换(cd 命令)执行路径,只不过此时我们需要使用node命令来运行文件了。
总结,在实际项目中建议使用
path.resolve(__dirname, 'a')