如何編寫此文件以備份父級2級以查找文件?在相對路徑的開始fs:我如何找到父文件夾?
fs.readFile(__dirname + '/../../foo.bar');
注意正斜槓:
fs.readFile(__dirname + 'foo.bar');
如何編寫此文件以備份父級2級以查找文件?在相對路徑的開始fs:我如何找到父文件夾?
fs.readFile(__dirname + '/../../foo.bar');
注意正斜槓:
fs.readFile(__dirname + 'foo.bar');
試試這個。
看起來你需要path
模塊。 (特別path.normalize
)
var path = require("path"),
fs = require("fs");
fs.readFile(path.normalize(__dirname + "/../../foo.bar"));
使用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()
將處理前/後你斜線,只是做正確的事,你不必試圖記住當尾隨斜線存在,當他們不。
如果您對父母的位置沒有肯定的話,這會爲您帶來路徑;
var path = require('path'),
__parentDir = path.dirname(module.parent.filename);
fs.readFile(__parentDir + '/foo.bar');
如果另一個模塊調用你的,你還是會想知道的主要文件的位置正在運行,你可以使用的修改@傑森代碼:
var path = require('path'),
__parentDir = path.dirname(process.mainModule.filename);
fs.readFile(__parentDir + '/foo.bar');
這樣,你會獲取實際運行的腳本的位置。
我知道這有點挑剔,但迄今爲止所有的答案都不完全正確。
path.join()的目的是消除調用者需要知道使用哪個目錄分隔符(使代碼平臺不可知)。
技術上正確的答案會是這樣的:
var path = require("path");
fs.readFile(path.join(__dirname, '..', '..', 'foo.bar'));
我會加入這個爲亞歷克斯·韋恩的答案評論,但還沒有足夠的代表!
編輯:按user1767586的觀察
'foo.bar'應該是'foo.bar'。我試着做一個編輯,但是編輯至少需要6個字符(如果你問我這個愚蠢的規則,阻止我們編輯這樣的小錯別字) – user1767586
您可以使用
path.join(__dirname, '../..');
最簡單的方法是使用:
path.resolve(__dirname, '..', '..');
確實是正確的解決方案,因爲您不需要通過將「../」連接到路徑來解析文件夾 –
我一直在試圖與沒有運氣,但我只是做了'fs.readFile(__ dirname +'/../../ foo.bar');'它工作。 – fancy
我假設'__dirname'就像''/ foo/bar''而不是''/ foo/bar /''。 –
我想是這樣的...... – fancy