サーバーサイドローカル環境

【Node.js】 Windows上で動作させるための設定知識

更新日:2021/05/26

Node.jsはよくわからないけれど使ってみたいという人向けに、どのようにすればNode.jsが動作してくれのかを解説します。

 

インストール

Windows版のNode.jsのインストールは、基本的にインストーラーでおこないます。

インストールの方法は次の記事で紹介しているので、そちらを読んでみてください。
【Node.js】 Windows10にインストールしてブラウザ表示するまでの要点メモ

インストーラーを使用しないで、WindowsにNode.jsを設置することもできます。
Node.jsダウンロードページからWindows Binary (.zip)をダウンロードして任意フォルダに展開し、次項以降で紹介している設定を行ってください。

Node.jsはサーバーサイドJavaScriptと解説されているため、Web関連の処理をおこなうものと誤認される傾向があります。
本質は、JavaScriptコードを読み込み処理をおこなう、コマンドライン上で動作する実行ファイルです。

コマンドライン上で動作するため、ファイルシステムやネットワークにアクセスできますが、Node.js自体はスクリプトを処理しているだけということを念頭に置いておきましょう。

 

Node.jsを動作させるために必要な設定

  1. インストール先フォルダを環境変数PATHに追加する
  2. npmrcファイルを作成する
  3. 環境変数NODE_PATHを設定する

1.について

インストーラーでNode.jsをインストールした場合、自動でPATHを設定してくれるので1は必要ありません。
Node.jsのzipを展開してインストールした場合は、次項の動作に必要な実行ファイルを参考にして、PATHを設定してください。

2.について

インストーラーでNode.jsをインストールした場合、パッケージのグローバルインストール先として C:\Users\ユーザー名\AppData\Roaming\npm が使用されます。
しかしNode.jsのzipを展開してインストールした場合は、npm.cmdの実行フォルダ内のnode_modulesが使用されます。インストーラーと同じフォルダを使用する場合、npmrcファイルを作成する必要があります。

ファイル名:Node.jsフォルダ\node_modules\npm\npmrc
(同じフォルダ内に .npmrc というファイルがあるので間違えないようにしてください。)

内容:prefix=${APPDATA}\npm

npmrc

この設定は、現在の npmコマンドのみ有効です。

Node.jsを複数のバージョンで使い分けている時は、注意する必要があります。
この場合は、次のコマンドを実行します。


npm config set prefix=グローバルインストールパス

このコマンドは、ユーザーフォルダのルートに .npmrc ファイルを作成します。
ユーザー名が aaa なら、 C:\Users\aaa\.npmrc です。

この位置は、どのバージョンの npmコマンドでも参照してくれます(たぶん)。

3.について

NODE_PATHは、パッケージをグローバルインストールした後、スクリプトで使用するために必要な環境変数です。
しかし、インストーラーは設定してくれません。

NODE_PATHについてはモジュールインストールとパスの最後で簡単な解説をしているので、参考にしてみてください。

 

動作に必要な実行ファイル

Node.jsをインストールすると、インストール先フォルダ内に次のようなファイルが展開されます。


インストール先フォルダ
    ┃
    ┣ <node_modules>(フォルダ)
    ┃
    ┣ install_tools.bat
    ┃
    ┣ node.exe
    ┃
    ┣ node_etw_provider.man
    ┃
    ┣ nodevars.bat
    ┃
    ┣ npm
    ┃
    ┣ npm.cmd
    ┃
    ┣ npx
    ┃
    ┗ npx.cmd

いろいろありますが、重要なのが次の二つです。

  1. node.exe : Node.jsの実行ファイル
  2. npm.cmd : パッケージ管理をおこなうスクリプト( npm-cli.js )を検索し、node.exeで実行するWindowsのバッチファイル

npm-cli.jsは、node_modulesフォルダ内のnpm\binにあります。

どのディレクトリからでもnode.exeとnpm.cmdを実行できるように、環境変数PATHにインストール先フォルダを追加する必要があります。

ただしインストーラーでNode.jsをインストールした場合、自動で環境変数PATHの設定をしてくれます。

環境変数PATHの解説や変更方法は、次のページを見てください。
Windows10で環境変数を追加・変更する方法

 

モジュール

JavaScriptとは一般的にはECMAという標準化機関が制定しているECMAScriptを元に作成したスクリプトコードまたは、そのスクリプトコードを読み込み実行する環境を指します。

ECMAScriptは配列や基礎的な数値演算など内部的にデータを扱う機能が定義されていますが、それ以外の例えばファイル入出力などの機能は実装側(JavaScript実行環境の作成者)が独自または他の仕様を取り込んで定義します。

Node.jsではこれらの追加機能をモジュールと呼んでいて、ECMAScriptの組み込みオブジェクトとは区別され、呼び出し方法が異なります。

組み込みオブジェクトは、直接実行できます。


 // Mathオブジェクトのfloorメソッドで整数化
const data = Math.floor( 3.5 );

モジュールを呼び出すときは、requireを使用します。


  // fsモジュールを呼び出す
const fs = require("fs");

 // ファイルが存在するかチェック
if( fs.existsSync( "text.txt") ) console.log( "ファイルあり" );

Node.jsの実行ファイルnode.exeにはあらかじめモジュールが組み込まれていて、これらは組み込みモジュールと呼ばれています。

組み込みモジュールは、Node.jsが用意しているAPI リファレンスで確認できます。
https://nodejs.org/ja/docs/

また、第三者が作成したモジュールをnpmレジストリサービスを利用してダウンロードすることができます。

これらのモジュールを使用する場合も組み込みモジュールと同様に、requireを使用します。

 

モジュールインストールとパス

モジュールのインストールには、カレントフォルダにダウンロードするローカルインストールと、特定のフォルダにインストールするグローバルインストールの2種類あります。

ローカルインストール

npmレジストリサービスを利用してモジュールをダウンロードする場合、次のようにnpm.cmd を実行します。

インストールコマンド

npm install パッケージ名

モジュールは動作に必要なファイルを一つにまとめたパッケージとしてダウンロードされます。
そのため、インストールはパッケージ名を指定します。

実行すると、カレントフォルダにnode_modulesフォルダが存在しない場合は作成され、そのフォルダ内にダウンロードされます。

例えば次のコマンドを実行すると、c:\Users\aaa\Desktop\node_modulesフォルダ内に、画像処理モジュールsharpがダウンロードされます。


c:\Users\aaa>cd Desktop ← Desktopに移動

c:\Users\aaa\Desktop>npm install sharp ← パッケージインストール

c:\Users\aaa\Desktop>dir node_modules\sharp 
 (省略) ← node_modulesが作成され、その中にインストールされた
2021/05/26  16:28    <DIR>          .
2021/05/26  16:28    <DIR>          ..
 (省略)

ただし、親フォルダにnode_modulesフォルダがある場合、そちらにインストールされます。


c:\Users\aaa>dir node_modules 
 (省略) ← 親フォルダにnode_modulesがある
 2021/05/26  16:28    <DIR>          .
 2021/05/26  16:28    <DIR>          ..
 (省略)

c:\Users\aaa>cd Desktop ← Desktopに移動

c:\Users\aaa\Desktop>npm install express ← パッケージインストール

c:\Users\aaa\Desktop>dir node_modules
 (省略)  ← node_modulesが作成されなかった
ファイルが見つかりません
 (省略)

c:\Users\aaa\Desktop>dir ..\node_modules\express
 (省略) ← 親フォルダのnode_modulesにインストールされていた
2021/05/26  16:28    <DIR>          .
2021/05/26  16:28    <DIR>          ..
 (省略)

グローバルインストール

特定のフォルダにインストールすることで、全てのスクリプトから共通的にモジュールを呼び出すことができます。

npmレジストリサービスを利用してモジュールをグローバルインストールする場合、次のようにnpm.cmd を実行します。

インストールコマンド

npm install -g パッケージ名

-gを付加することで、グローバルインストールされます。

インストール先の確認は、次のコマンドを実行します。

グローバルインストールパスを確認

npm root -g

なお、Node.jsをインストーラーでインストールした場合と、zipを展開してインストールした場合ではグローバルインストールパスが異なります。

一致させたい場合は、こちらを見てください。

パスの検索順確認と変更

requireは指定したモジュールを、いくつかのフォルダ内から探してきます。

対象となるフォルダは、次のようにして確認できます。


c:\Users\aaa>cd Desktop ← カレントフォルダを変更

c:\Users\aaa\Desktop>node ← nodeを実行
Welcome to Node.js v14.17.0.
Type ".help" for more information.
>module.paths ← 入力してエンター
[
  'C:\\Users\\aaa\\Desktop\\repl\\node_modules',
  'C:\\Users\\aaa\\Desktop\\node_modules',
  'C:\\Users\\aaa\\node_modules',
  'C:\\Users\\node_modules',
  'C:\\node_modules',
  'C:\\Users\\aaa\\.node_modules',
  'C:\\Users\\aaa\\.node_libraries',
  'C:\\Program Files\\nodejs\\lib\\node'
]
>

module.pathsは、パスの検索順を配列で保持しています。

もし、他のパスを検索候補にいれたり順番を変更したい場合は、通常の配列操作と同じようにpushメソッドなどを使用してください。

グローバルパスの追加

前項のパスの検索順には、グローバルインストール先のパスが含まれていません。
そのためグローバルインストールしたモジュールは、デフォルト状態では使用できません。

ということで、module.pathsにグローバルインストール先のパスを追加しましょう。

方法としては、次のような方法があります。

スクリプトコード内


module.paths.push( グローバルインストール先のパス );

しかし、他の環境への可搬性が損なわれてしまうので、これは非推奨です。

そこで、NODE_PATHという環境変数にグローバルインストール先のパスをセットしておきます。
すると、node.exeがその値を読み取って、module.pathsに追加してくれます。


C:\Users\aaaa\Desktop>npm root -g ←グローバルインストール先を確認
C:\Users\aaaa\AppData\Roaming\npm\node_modules

                             ↓NODE_PATHをセット
C:\Users\aaaa\Desktop>set NODE_PATH=C:\Users\aaaa\AppData\Roaming\npm\node_modules

C:\Users\aaaa\Desktop>node
Welcome to Node.js v14.17.0.
Type ".help" for more information.
> module.paths
[
  'C:\\Users\\aaaa\\Desktop\\repl\\node_modules',
  'C:\\Users\\aaaa\\Desktop\\node_modules',
  'C:\\Users\\aaaa\\node_modules',
  'C:\\Users\\node_modules',
  'C:\\node_modules',
  'C:\\Users\\aaaa\\AppData\\Roaming\\npm\\node_modules', ←追加されている
  'C:\\Users\\aaaa\\.node_modules',
  'C:\\Users\\aaaa\\.node_libraries',
  'C:\\Program Files\\nodejs\\lib\\node'
]
>

環境変数をWindowsに追加する方法は、次のページをご覧ください。
Windows10で環境変数を追加・変更する方法

 

Node.jsで遊ぼう!

サーバーサイドとかフロントとかバックエンドとかそんな細かいことはどうでもいいんだ、とにかく動かして遊びたいんだ。

そんな方向けに、この記事を書いてみました。

これで、「ネットの記事見てインストールしてみた。なんだかよくわからないけれど、Node.jsが動いた」という状態から卒業できると思います。

実際のところ、Node.jsはWindows上で気軽に動作できるスクリプト言語です。
サーバーサイドという印象だけで、Windowsを否定してはダメです。

個人的には、一括処理したい場合などにとても便利に活用しています。

もっといろいろ試して、遊び感覚でスクリプトを組んでいきましょう!

更新日:2021/05/26

書いた人(管理人):けーちゃん

スポンサーリンク

記事の内容について

null

こんにちはけーちゃんです。
説明するのって難しいですね。

「なんか言ってることおかしくない?」
たぶん、こんなご意見あると思います。

裏付けを取りながら記事を作成していますが、僕の勘違いだったり、そもそも情報源の内容が間違えていたりで、正確でないことが多いと思います。
そんなときは、ご意見もらえたら嬉しいです。

掲載コードについては事前に動作確認をしていますが、貼り付け後に体裁を整えるなどをした結果動作しないものになっていることがあります。
生暖かい視線でスルーするか、ご指摘ください。

ご意見、ご指摘はこちら。
https://note.affi-sapo-sv.com/info.php

 

このサイトは、リンクフリーです。大歓迎です。