Node.jsで便利なライブラリをつくったとしても、お客さまのPCやサーバの本番環境に Node.jsの実行環境がないケース もあります。**「Node.jsの実行環境を持ち歩けたらなぁ、、」**ということでググってみたらこの記事が。。
インストーラなどの実行が不要な 解凍すればすぐに使えるNode.js実行環境の構築手順です。コレを使えば、実行環境ごとZipでアーカイブしたファイルを作成し作業環境でそれを解凍すればNode.js環境の構築完了、なんて事ができそうです。
ついでに、そのNode.js上でWebサーバを立ち上げることで、どこでも簡易WEBサーバが起動出来るようにしてみます。
Node.js実行環境の構築
公式からバイナリをダウンロード。Windows Binary (.zip) の64-bitを選択します。2020/03/15時点「node-v12.16.1-win-x64.zip」が最新版のようです。
ダウンロード後、任意の場所に解凍しましょう。たとえば T:\Tools\nodejs_portable
などなど。
さて上記ディレクトリには、node.exe
などが入っていると思いますが、同じディレクトリに起動コマンドrun.bat
を置いておきます。中身はテキストでこんな感じ。
@echo off
set PATH=%cd%;%PATH%
set NODE_PATH=%cd%\node_modules\npm\node_modules;%cd%\node_modules\npm
cmd
いわゆる、このディレクトリにパスを通しているだけです。
基本的な環境構築は以上です。
実行してみる
さてエクスプローラ上で run.bat
をダブルクリックして、node.js 実行環境を起動してみましょう。
T:\Tools\nodejs_portable>
こんな感じで起動すればOKです。
T:\Tools\nodejs_portable> node --version
v12.16.1
T:\Tools\nodejs_portable> npm --version
6.13.4
T:\Tools\nodejs_portable>
一応 Hello Worldを。
T:\Tools\nodejs_portable> mkdir app
T:\Tools\nodejs_portable> cd app
T:\Tools\nodejs_portable\app> type index.js ← あらかじめメモ帳とかで作成しておきましょう
console.log('Hello World.')
T:\Tools\nodejs_portable\app> node index.js ←実行
Hello World.
T:\Tools\nodejs_portable\app>
実行OKですね。つづいて npm なども動作確認してみます。
(上でつくったappは一旦削除したとして)
T:\Tools\nodejs_portable> mkdir app
T:\Tools\nodejs_portable> cd app
T:\Tools\nodejs_portable\app> npm init -y
Wrote to T:\Tools\nodejs_portable\app\package.json:
{
"name": "app",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC"
}
下記のような index.js
をつくってみました。
T:\Tools\nodejs_portable\app> type index.js
const request = require('request')
request.get('http://www.yahoo.co.jp', (err, res, body) => {
console.log(body)
})
npm i
でインストールします。
T:\Tools\nodejs_portable\app> > npm i --save request
npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142
npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN app@1.0.0 No description
npm WARN app@1.0.0 No repository field.
+ request@2.88.2
added 47 packages from 58 contributors and audited 63 packages in 9.683s
found 0 vulnerabilities
T:\Tools\nodejs_portable\app> node index.js
.... ばばっってYahooのサイトがなんか返ってくればOK
T:\Tools\nodejs_portable\app>
OKそうですね!
-- 注意 --
いわゆるグローバルインストールnpm install -g xx
について。
グローバルインストールした際は、T:\Tools\nodejs_portable\node_modules
にインストールされる想定だったのですが、すでに Node.jsがインストールされている環境のばあいそちらのディレクトリにインストールされてしまいました。
すでにNode.jsがインストールされている環境では、グローバルインストールは実施しない方がよさそうです。
ご注意ください。
簡易WEBサーバの構築
さて、さいごにWEBサーバです。Node.jsを用いたWEBサーバの構築は
[Node.js] 簡単なWebサーバとして静的ファイル配信/ディレクトリ一覧機能のサンプルコード
ココをまるまる参考にさせていただきました!感謝です。
さてやってみます。
(上でつくったappは一旦削除したとして)
T:\Tools\nodejs_portable> mkdir app
T:\Tools\nodejs_portable> cd app
T:\Tools\nodejs_portable\app> npm init -y
Wrote to T:\Tools\nodejs_portable\app\package.json:
{
"name": "app",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC"
}
T:\Tools\nodejs_portable\app> npm i --save express
npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN app@1.0.0 No description
npm WARN app@1.0.0 No repository field.
+ express@4.17.1
added 50 packages from 37 contributors and audited 126 packages in 10.259s
found 0 vulnerabilities
さて index.js
(WEBサーバのプログラム)は以下でOKです。単純です。
T:\Tools\nodejs_portable\app>type index.js
'use strict';
const express = require('express');
const app = express();
app.use(express.static('./dist'));
app.listen(process.env.PORT || 3000);
ポート番号:3000 で、ドキュメントルートを ./dist
としたWEBサーバを起動するためのJavaScriptコードが完成です。
疎通のため単純なhtmlを./dist
配下に配置します。
T:\Tools\nodejs_portable\app> mkdir dist
T:\Tools\nodejs_portable\app> type dist\index.html
<html>
<body>
<h1>テスト</h1>
</body>
</html>
T:\Tools\nodejs_portable\app>
実行してみる
さてWEBサーバを起動してみます。
T:\Tools\nodejs_portable\app> node index.js
...
起動したようです。
別のコマンドプロンプトからアクセスしてみます。(あもちろんWEBブラウザでもよいです)
C:\Users\xx> curl http://localhost:3000/index.html
<html>
<body>
<h1>テスト</h1>
</body>
</html>
OKそうですね!
例によって、インストールディレクトリ(例だとT:\Tools\nodejs_portable
ですね) をZip化して持ち運べば、任意の場所で解凍すればOKの、簡易WEBサーバの完成です。静的なWEBサーバですが、ちゃちゃっとつかうフロントのサーバとしては十分でしょう。
おつかれさまでした!