node.js - path.join vs path.resolve with __dirname

标签 node.js

使用 both path.joinpath.resolve__dirname 解析绝对值有区别吗Node.js 中的路径?

这样使用时是否应该首选其中一个(绝对路径分辨率占用例的 90%)?

const absolutePath = path.join(__dirname, some, dir);

对比

const absolutePath = path.resolve(__dirname, some, dir);

这两种方法都归一化路径。

最佳答案

是的,功能之间存在差异,但在这种情况下您使用它们的方式将产生相同的结果。

path.join 通过将两条路径合并在一起返回规范化路径。它可以返回绝对路径,但不一定总是这样做。

例如:

path.join('app/libs/oauth', '/../ssl')

解析为 app/libs/ssl

另一方面,

path.resolve 将解析为绝对路径。

例如,当你运行时:

path.resolve('bar', '/foo');

返回的路径将是 /foo,因为这是可以构造的第一个绝对路径。

但是,如果你运行:

path.resolve('/bar/bae', '/foo', 'test');

返回的路径将再次是/foo/test,因为这是第一个可以从右到左形成的绝对路径。

如果您不提供指定根目录的路径,则将提供给 resolve 函数的路径附加到当前工作目录。所以如果你的工作目录是 /home/mark/project/:

path.resolve('test', 'directory', '../back');

解决

/home/mark/project/test/back

使用 __dirname 是包含源文件的目录的绝对路径。当您使用 path.resolvepath.join 时,如果您在 __dirname 之后给出相同的路径,它们将返回相同的结果。在这种情况下,这实际上只是一个偏好问题。

关于node.js - path.join vs path.resolve with __dirname,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39110801/

相关文章:

javascript - 带有热重载的 Webpack 捆绑 Node Express = hell

node.js - MERN 堆栈项目中的 React [create-react-app] 正在提供依赖项

javascript - NodeJS 电子邮件别名服务器

创建 Node.js Express 项目时 Eclipse 挂起

javascript - DynamoDB 的 LocalSecondaryIndexes 出现 "key schema too big"错误?

node.js - NodeJS 和 Angular 2 项目

node.js - 检查 Mongoose 连接状态而不创建新连接

javascript - 在特定时刻调用 NodeJs 函数

node.js - 如何在保存之前检查该数据是否已存在于数据库中

从命令行界面上传 Node.js 文件