web-dev-qa-db-ja.com

fs:親フォルダーを見つけるにはどうすればよいですか?

親2レベルに戻ってファイルを見つけるために、これをどのように書きますか?

fs.readFile(__dirname + 'foo.bar');
161
fancy

これを試して:

fs.readFile(__dirname + '/../../foo.bar');

相対パスの先頭にあるスラッシュに注意してください。

224
Andrew Hare

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()は、先頭/末尾のスラッシュを処理し、正しいことを行うだけで、末尾のスラッシュが存在する場合と存在しない場合を覚えておく必要はありません。

133
Alex Wayne

私はそれが少しうるさいことを知っていますが、これまでのすべての答えは完全に正しくありません。

Path.join()のポイントは、呼び出し元が使用するディレクトリセパレータを知る必要性を排除することです(コードプラットフォームに依存しません)。

技術的には、正しい答えは次のようになります。

var path = require("path");

fs.readFile(path.join(__dirname, '..', '..', 'foo.bar'));

アレックス・ウェインの答えにコメントとしてこれを追加しましたが、まだ十分な担当者がいませんでした!

編集:user1767586の観察による

84
smremde

最も簡単な方法は、 path.resolve を使用することです。

path.resolve(__dirname, '..', '..');
50
Yan Foto

path モジュールが必要になるようです。 ( path.normalize 特に)

var path = require("path"),
    fs = require("fs");

fs.readFile(path.normalize(__dirname + "/../../foo.bar"));
12
Dominic Barnes

別のモジュールがあなたのものを呼び出し、実行中のメインファイルの場所を知りたい場合は、@ Jasonのコードの修正を使用できます。

var path = require('path'),
    __parentDir = path.dirname(process.mainModule.filename);

fs.readFile(__parentDir + '/foo.bar');

そうすれば、実際に実行されているスクリプトの場所を取得できます。

11
Jeremy Battle

親がどこにいるのかわからない場合、これはパスを取得します。

var path = require('path'),
    __parentDir = path.dirname(module.parent.filename);

fs.readFile(__parentDir + '/foo.bar');
7
Jason Brumwell

使用できます

path.join(__dirname, '../..');
5
puneet

これも機能します:

fs.readFile(`${__dirname}/../../foo.bar`);
1
Dhruvin modi