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 --versionv12.16.1
T:\Tools\nodejs_portable>npm --version6.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 -yWrote 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>typeindex.jsconstrequest=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 -yWrote 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>typeindex.js'use strict';constexpress=require('express');constapp=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サーバですが、ちゃちゃっとつかうフロントのサーバとしては十分でしょう。
おつかれさまでした!