Node.jsで__dirnameを使用する方法
紹介
__dirnameは、現在実行中のファイルが含まれているディレクトリの絶対パスを教えてくれる環境変数です。
この記事では、Node.jsプロジェクトで__dirnameを実装する方法について探ります。
DigitalOcean App Platformを使用して、GitHubからNodeアプリケーションをデプロイします。DigitalOceanにアプリのスケーリングを任せましょう。
前提条件
このチュートリアルを完了するためには、次のものが必要です:
- Node.jsに関する一般的な知識。Node.jsについて詳しく学ぶには、私たちの「Node.jsでコーディングする方法」シリーズをチェックしてください。
このチュートリアルはNode.js v17.2.0とnpm v8.2.0で確認されました。
ステップ1 — プロジェクトの設定
このチュートリアルでは、__dirnameの使い方を探るために、次のサンプルディレクトリ構造を使用します:
dirname-example
├──index.js
├──public
├──src
│ ├──helpers.js
│ └──api
│ └──controller.js
├──cronjobs
│ └──hello.js
└──package.json
ターミナルで dirname-example ディレクトリを作成することから始めることができます:
- mkdir dirname-example
プロジェクトディレクトリに移動してください:
- cd dirname-example
Node.jsプロジェクトとして初期化します:
- npm init --yes
今から、実験するためのディレクトリとファイルを作成します。
ステップ2 — __dirnameを使用する
ファイルがどのディレクトリにあるかを確認するには、__dirnameを使用できます。
srcディレクトリのapiサブディレクトリにcontroller.jsを作成および編集します:
console.log(__dirname) // "/Users/Sam/dirname-example/src/api"
console.log(process.cwd()) // "/Users/Sam/dirname-example"
それから、スクリプトを実行します:
- node src/api/controller.js
cronjobsディレクトリ内にhello.jsを作成および編集します:
console.log(__dirname) // "/Users/Sam/dirname-example/cronjobs"
console.log(process.cwd()) // "/Users/Sam/dirname-example"
それから、スクリプトを実行してください:
- node cronjobs/hello.js
__dirnameの値は、コンソールに出力するファイルによって異なることに注意してください。process.cwd() メソッドも値を返しますが、こちらはプロジェクトのディレクトリです。__dirname 変数は、常にファイルが存在する場所の絶対パスを返します。
ステップ3 — ディレクトリを扱う
このセクションでは、__dirnameを使用して新しいディレクトリを作成し、それにポイントを設定し、新しいファイルを追加する方法を探ります。
新しいディレクトリの作成
新しいディレクトリをあなたの index.js ファイルに作成するには、path.join() の最初の引数に __dirname を挿入し、新しいディレクトリの名前を2番目の引数として指定します:
const fs = require('fs');
const path = require('path');
const dirPath = path.join(__dirname, '/pictures');
fs.mkdirSync(dirPath);
今、mdirSync()メソッドを呼び出した後、絶対パスとして__dirnameを含む新しいディレクトリpicturesを作成しました。
ディレクトリを指し示す
もう一つのユニークな機能は、ディレクトリを指すことができる能力です。あなたのindex.jsファイルで、変数を宣言し、最初の引数として__dirnameの値をpath.join()に渡し、2番目の引数として静的ファイルを含むディレクトリを指定します:
express.static(path.join(__dirname, '/public'));
ここでは、Node.jsに__dirnameを使用して静的ファイルを含むpublicディレクトリを指すように指示しています。
ディレクトリにファイルを追加する
既存のディレクトリにファイルを追加することもできます。あなたのindex.jsファイルで、変数を宣言し、最初の引数に__dirnameを、2番目の引数に追加したいファイルを含めます:
const fs = require('fs');
const path = require('path');
const filePath = path.join(__dirname, '/pictures');
fs.openSync(filePath, 'hello.jpeg');
openSync() メソッドを使用すると、ディレクトリ内にファイルが存在しない場合、そのファイルが追加されます。
結論
Node.jsはディレクトリを作成し、指し示す方法を提供します。そして、モジュラー環境変数を使用して既存のディレクトリにファイルを追加できます。
さらなる情報については、Node.jsの__dirnameに関するドキュメントや、Express.jsフレームワークでの__dirnameの使用に関するチュートリアルを確認してください。
