4

我正在阅读这个 webpack 教程:https ://youtu.be/TOb1c39m64A

在 1:30:00 左右,他讨论了 in 的使用,__dirnamepath.resolve我不太明白使用和不使用它的区别。

难道他们两个(path.resolve& __dirname)的意思是一样的吗?两者都给出了运行该文件的当前绝对目录。这可以通过以下事实得到证实:当我删除__dirname它时,它仍然会build在相同的根位置创建文件(即使webpack.config.js)文件不存在于根级别。即以下两个代码产生相同的结果:

__dirname

  output: {
    assetModuleFilename: "images/[hash][ext][query]",
    path: path.resolve(__dirname, 'dist')
  }, 

没有__dirname

  output: {
    assetModuleFilename: "images/[hash][ext][query]",
    path: path.resolve('dist')
  }, 

那么__dirname这里需要用到什么??

4

1 回答 1

7

你有权利在你的场景中,他们将以同样的方式工作。

但这两者之间存在细微差别,我将尝试对其进行解释。

Node 脚本中的__dirname将为您提供当前 JS 文件所在位置的绝对路径。

另一方面, path.resolve为您提供绝对路径,如果不是从路径段构造,则默认为当前工作目录。(这是你的情况)。

where js file resides和的路径是有区别的currently working directory

你怎么能找到这种差异?在您的应用程序中,您可以使用以下命令更改当前目录:processs.chdir(./example).

现在,如果您检查您的地址,它们将不一样。path.resolve还将将此/example部分附加到您的路径中。__dirname仍将参考正确的路径。

很快,在您的情况下,它们的工作方式完全相同,但__dirname方法更稳健。

于 2021-09-25T06:45:51.937 回答