GIG

赴くままに技術を。

CygwinからNode.jsを利用する

anyenvで入れてみる

前回と同様、anyenvを利用して入れてみる。

$  anyenv install ndenv
$  exec $SHELL -l

利用可能なバージョンを一覧表示して、選んだ一つをインストール

$ ndenv install --list
..利用できる一覧がでる
$ ndenv install v0.11.11

特に何も出力されずに終わった...?????

$ cat /tmp/node.build-XXXXXXXXXXXXXXX.XXXX.log
..特になにも出力されず

特にログも出てない....!!!!???? 試しにanyenvではなく、ndenvを利用してもダメだった。。 何が悪いんだろう。。 時間がとれたときにまた調査してみることに。

ええい、もうWindows版をいれてCygwinから利用してみる

node.jsからWindows(.msi)の32-bit版をダウンロードして、インストールした(特に変わったことはしてない)。

$ node -v
v0.10.26
$ npm -v
1.4.3

あるjavascriptのアプリを動かしてみようとしたところ、 expressが無いと。

$ node server.js

module.js:340
    throw err;
          ^
Error: Cannot find module 'express'
    at Function.Module._resolveFilename (module.js:338:15)
    at Function.Module._load (module.js:280:25)
    at Module.require (module.js:364:17)
    at require (module.js:380:17)
    at Object.<anonymous> (D:\software\cygwin\tmp\d3AngularIntegration\server.js:4:13)
    at Object.<anonymous> (D:\software\cygwin\tmp\d3AngularIntegration\server.js:14:4)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)

expressをグローバル(どこからでも利用できる形式)で入れる。 何か怒られた。

$ npm install -g express
/cygdrive/d/software/nodejs/npm: line 2: $'\r': コマンドが見つかりません
/cygdrive/d/software/nodejs/npm: line 4: $'\r': コマンドが見つかりません
/cygdrive/d/software/nodejs/npm: line 5: 期待してない token `$'in\r'' のあたりにシンタックスエラー
'cygdrive/d/software/nodejs/npm: line 5: `case `uname` in

Node.jsをWindowsインストーラで入れたら、Cygwinのシェルでnpmがエラーになる - 死ぬまでの暇潰しによると改行コードがCR+LFが認識できないみたい。

改行コードが CR+LF のシェルスクリプトを Cygwin で実行 - ◆ICT備忘録で紹介されているように.bashrcに以下を書いてあげるとCR+LFが認識される。

export SHELLOPTS
set -o igncr

これでexpressは入ったが、まだCan't findだと。 expressのパスをwhichで見て、NODE_PATHに追加してやる。

$ export NODE_PATH=$NODE_PATH:(expressのパス) >> ~/.bashrc

それでもCan't find。。もうローカルでいいや。

$ npm install express
$ node server.js

ま、これはできました。 node.jsのパッケージの探し方は調査しないとなぁ。