web-dev-qa-db-ja.com

NodeJSが相対パスでファイルにアクセスする

それは単純な問題のように思えた。しかし、私はこれをクラックすることはできません。 helper1.js内でfoobar.jsonにアクセスしたい(config/dev/から)

root
  -config
   --dev
    ---foobar.json
  -helpers
   --helper1.js

これを機能させることができませんでした fs:親フォルダーを見つけるにはどうすればよいですか?

ここでの助けは素晴らしいでしょう。

55
lonelymo

pathモジュールを使用して、helper1.jsが存在するディレクトリのパスをfoobar.jsonの相対パスに結合できます。これにより、foobar.jsonへの絶対パスが得られます。

var fs = require('fs');
var path = require('path');

var jsonPath = path.join(__dirname, '..', 'config', 'dev', 'foobar.json');
var jsonString = fs.readFileSync(jsonPath, 'utf8');

これは、UTF8エンコーディングを想定したLinux、OSX、およびWindowsで動作するはずです。

127
AerandiR

シンプル! ..という名前のフォルダーは親フォルダーであるため、必要なファイルへのパスを作成できます

var foobar = require('../config/dev/foobar.json');

2レベル上げる必要がある場合は、../../などと記述します。

これについての詳細は this SO answer とコメントです

10
AdityaParab