🎉

モジュールを自作し呼び出してみる

2023/09/18に公開

概要

モジュールを自作し、呼び出す流れを説明します。

モジュールとは

  • require()で呼び出されてプログラムから利用されるプログラム

A module is any file or directory in the node_modules directory that can be loaded by the Node.js require() function.

https://zenn.dev/y__adler/articles/94f3f04c667a82

実践

①モジュール作成

  1. subtractとZEROというプロパティをもつオブジェクト作成
  2. オブジェクトをmodule.exportsに代入
test/module.js
module.exports = {
    subtract: (a, b) => a - b,
    ZERO: 0
};

②モジュール利用側

次に利用する側のスクリプトを作成します。

  1. require()の引数に、モジュールファイルの相対パスを指定
    • モジュールファイルが呼び出され、require()の箇所がmodule.exportsにセットしたオブジェクトで上書きされるイメージ
  2. 定数modをmodule.exportsにセットしたオブジェクトとして宣言する
  3. modに代入されたオブジェクトから関数と定数を呼び出す
test/main.js
const mod = require('./module');
console.log(mod.subtract(2, 1));
console.log(mod.ZERO);

③実行する

nodeコマンドの引数にmain.jsファイルを指定し実行します

ターミナル
$ node ./test/main.js
1
0

補足

require()に渡す引数の拡張子

require()の引数に渡すモジュールファイル名の拡張子がjsの場合は省略し、js以外の場合は拡張子を明記しましょう。
理由としては拡張子以外同名のファイルが存在している場合に、拡張子を省略するとjsの方が優先されてしまうためです。

require()に渡す引数のパス

  • 自作モジュールの場合は必ず先頭に./か../を付ける
    • モジュールが同じ階層にあるからといって、./を省略してしまうとコアモジュールの方を探しに行ってしまう
  • コアモジュールやnode_modulesディレクトリ配下のモジュールの場合はファイル名だけ

./か../を付けない場合の検索先優先度

  1. Node.jsのコアモジュール
  2. node_modulesディレクトリ

./か../を付けた場合の検索先

呼び出し側のスクリプトからの相対パス箇所

参考

https://docs.npmjs.com/about-packages-and-modules

Discussion