fs模块函数使用的当前目录是什么?

Old*_*zer 29 fs node.js express

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

var fs = require('fs');
var data = fs.readFile("abc.jpg", "binary");
Run Code Online (Sandbox Code Playgroud)

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

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


我的文件结构是:

ExpressApp1/
           app.js
           routes/
                 members.js
Run Code Online (Sandbox Code Playgroud)

在members.js中我创建了一个fs.createWriteStream("abc")和文件abcExpressApp1/

ard*_*lez 46

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

此外,当前工作目录可以通过以下方式获得:

process.cwd()
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请查看:https://nodejs.org/api/fs.html

编辑:因为您node app.jsExpressApp1目录中启动了app.js ,所以每个相对路径都相对于"ExpressApp1"文件夹,这就是为什么fs.createWriteStream("abc")会创建一个写入流来写入文件的原因ExpressApp1/abc.如果要写入ExpressApp1/routes/abc,可以将代码更改members.js为:

fs.createWriteStream(path.join(__dirname, "abc"));
Run Code Online (Sandbox Code Playgroud)

更多:

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

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

  • 它不是脚本所在的目录,它是启动`node`解释器的目录(也就是当前的工作目录). (5认同)