【问题标题】:What is the current directory used by fs module functions?fs 模块函数使用的当前目录是什么?
【发布时间】:2017-08-15 19:33:31
【问题描述】:

在典型的 node.js/Express 应用程序中调用 fs 模块中的方法时,当前目录是什么?例如:

var fs = require('fs');
var data = fs.readFile("abc.jpg", "binary");

用于定位 abc.jpg 的默认文件夹是什么?它是否依赖于包含脚本的文件夹位置?

有查询当前目录的方法吗?


我的文件结构是:

ExpressApp1/
           app.js
           routes/
                 members.js

在 members.js 中,我有一个 fs.createWriteStream("abc") 并且文件 abc 是在 ExpressApp1/ 中创建的

【问题讨论】:

  • __dirname 全局变量将给出它记录的文件的目录。

标签: node.js express fs


【解决方案1】:

这是节点解释器启动的目录(也就是当前工作目录),而不是脚本文件夹位置的目录(谢谢 robertklep)。

另外,当前工作目录可以通过:

process.cwd()

更多信息,您可以查看:https://nodejs.org/api/fs.html

编辑:因为您在ExpressApp1 目录中通过node app.js 启动app.js,所以每个相对路径都将相对于“ExpressApp1”文件夹,这就是fs.createWriteStream("abc") 将创建一个写入流以写入@ 中的文件的原因987654328@。如果要写信给ExpressApp1/routes/abc,可以将members.js中的代码改成:

fs.createWriteStream(path.join(__dirname, "abc"));

更多:

https://nodejs.org/docs/latest/api/globals.html#globals_dirname

https://nodejs.org/docs/latest/api/path.html#path_path_join_paths

【讨论】:

  • 不是脚本所在的目录,而是node解释器启动的目录(也就是当前工作目录)。
  • @ardilgulez 我用我的经验扩展了我的问题。
猜你喜欢
  • 2017-12-08
  • 1970-01-01
  • 2022-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-04
相关资源
最近更新 更多