fan*_*ncy 172 javascript filesystems node.js
如何写这个以备份父级2级来查找文件?
fs.readFile(__dirname + 'foo.bar');
And*_*are 244
试试这个:
fs.readFile(__dirname + '/../../foo.bar');
请注意相对路径开头的正斜杠.
Ale*_*yne 142
使用path.join http://nodejs.org/docs/v0.4.10/api/path.html#path.join
var path = require("path"),
    fs = require("fs");
fs.readFile(path.join(__dirname, '../..', 'foo.bar'));
path.join() 将为您处理前导/尾随斜杠,并做正确的事情,您不必尝试记住何时存在拖尾斜杠以及何时不存在.
smr*_*mde 87
我知道它有点挑剔,但到目前为止所有答案都不太对.
path.join()的目的是消除调用者需要知道使用哪个目录分隔符(使代码平台不可知)的需要.
从技术上讲,正确的答案是:
var path = require("path");
fs.readFile(path.join(__dirname, '..', '..', 'foo.bar'));
我会将此添加为对Alex Wayne的答案的评论但尚未足够的代表!
编辑:根据用户1767586的观察
Yan*_*oto 52
最简单的方法是使用path.resolve:
path.resolve(__dirname, '..', '..');
Dom*_*nes 12
看起来你需要这个path模块.(path.normalize特别是)
var path = require("path"),
    fs = require("fs");
fs.readFile(path.normalize(__dirname + "/../../foo.bar"));
Jer*_*tle 11
如果另一个模块调用你的并且你仍然想知道正在运行的主文件的位置,你可以使用@Jason代码的修改:
var path = require('path'),
    __parentDir = path.dirname(process.mainModule.filename);
fs.readFile(__parentDir + '/foo.bar');
这样你就可以获得实际运行的脚本的位置.
如果你不肯定父母在哪里,这将为你提供道路;
var path = require('path'),
    __parentDir = path.dirname(module.parent.filename);
fs.readFile(__parentDir + '/foo.bar');