在典型的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/
答案 0 :(得分:37)
它是启动节点解释器的目录(也就是当前工作目录),而不是脚本文件夹位置的目录(谢谢robertklep)。
此外,当前工作目录可以通过以下方式获得:
process.cwd()
有关详情,请查看:https://nodejs.org/api/fs.html
编辑:因为您在node app.js
目录的ExpressApp1
处启动了app.js,所以每个相对路径都相对于" ExpressApp1"文件夹,这就是为什么fs.createWriteStream("abc")
将创建写入流以写入ExpressApp1/abc
中的文件的原因。如果您要写信至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