Answers:
试试这个:
fs.readFile(__dirname + '/../../foo.bar');
注意相对路径开始处的正斜杠。
__dirname
是什么,'/foo/bar'
而不是'/foo/bar/'
。
__dirname
看起来像是一个不存在的目录,而不是。斜线很重要。/path/to/your/dir
__dirname + ".."
/path/to/your/dir..
/path/to/your
使用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()
会为您处理前导/尾随斜杠,并且做正确的事情,并且您不必尝试记住何时存在尾随斜杠以及何时不存在。
__dirname
曾经是host/src/folder
,我需要host/folder
,这对我有用,而不是OP的答案。
path.join(__dirname, '..', '..', 'foo.bar')
我知道这有点挑剔,但是到目前为止,所有答案都不是很正确。
path.join()的重点是消除了调用者知道使用哪个目录分隔符的需要(使代码平台不可知)。
从技术上讲,正确的答案应该是:
var path = require("path");
fs.readFile(path.join(__dirname, '..', '..', 'foo.bar'));
我本来可以将此评论添加到Alex Wayne的答案中,但还没有足够的代表!
编辑:根据user1767586的观察
最简单的方法是使用path.resolve
:
path.resolve(__dirname, '..', '..');
../
的路径
看起来您将需要该path
模块。(path.normalize
特别是)
var path = require("path"),
fs = require("fs");
fs.readFile(path.normalize(__dirname + "/../../foo.bar"));
如果您对父母的身份不满意,这将为您提供帮助。
var path = require('path'),
__parentDir = path.dirname(module.parent.filename);
fs.readFile(__parentDir + '/foo.bar');
fs.readFile(__dirname + '/../../foo.bar');
,而且奏效了。