【问题标题】:Why do do relative paths in Node.js for FS module and require point at different locations?为什么 Node.js 中 FS 模块的相对路径和要求指向不同的位置?
【发布时间】:2021-10-06 17:54:45
【问题描述】:

当我们在 Node JS 上运行服务器时,我们应该使用相对于我们在其中启动 node 的目录的路径。要解决这个问题,我们应该像这样使用 path 模块:

fs.createReadStream(path.join(__dirname, '..', '..', 'data', 'someData.csv'))

但是当我们使用require 时,我们可以只放置一个指向我们需要的文件的相对路径,而不必考虑从哪里启动node

const {data} = require('../../models/data.model');

您能否解释一下:为什么会这样?

【问题讨论】:

    标签: javascript node.js path require fs


    【解决方案1】:

    fs 模块处理相对于进程工作目录的相对路径,例如它在哪里启动。您可以使用process.cwd() 找出它在哪里。

    对于require,这有点特殊。当您的脚本/模块被初始化和调用时,NodeJS 将在后台创建一个全新的require 函数。你可以阅读更多关于here的信息。

    基本上,您的模块有自己的require,它知道__dirname,并使传递给它的所有相对路径都相对于该路径。

    【讨论】:

      猜你喜欢
      • 2015-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-02
      • 1970-01-01
      • 1970-01-01
      • 2016-05-22
      • 1970-01-01
      相关资源
      最近更新 更多