Node.js 0.8.8 を Mac で動かす (Snow Leopard)

ちょっと Node を使いたくなったので入れてみた。

Node をインストールする

Mac なら nodejs.org で [INSTALL] をクリックすると node-v0.8.8.pkg をダウンロードできる。
ダウンロードしたパッケージを実行すればハイおしまい。

npm でモジュールをインストールする

Node のモジュールは npm で簡単にインストールできる。
今回はテンプレートエンジンの ejs, MVC フレームワークの express をインストールする。

# npm install -g ejs express

ここで -g オプションを付けると「グローバルインストール」となり、/usr/local/lib/node_modules 以下にインストールされる。

ちなみに出てきた警告
...
npm http 200 https://registry.npmjs.org/methods/-/methods-0.0.1.tgz
npm WARN package.json methods@0.0.1 No README.md file found!
...

アプリを作る

まず express を使ってアプリの雛形を作る。 --ejs オプションを付けると、テンプレートエンジンとして ejs を使うことができる。express のバージョンは 3.0.0rc4 だった。

% express --ejs MyFirstNode

とりあえず動かしてみる。

% cd MyFirstNode
% node app.js

module.js:340
    throw err;
          ^
Error: Cannot find module 'express'
...

おっとエラーだ。調べてみるとモジュールをローカル(ここでは MyFirstNode ディレクトリ)にリンクしないといけないらしい。で、実行。

% npm link express
npm ERR! Error: EPERM, chmod '/Users/chun/MyFirstNode/node_modules/express/bin/express'
npm ERR!  { [Error: EPERM, chmod '/Users/chun/MyFirstNode/node_modules/express/bin/express']
npm ERR!   errno: 50,
npm ERR!   code: 'EPERM',
npm ERR!   path: '/Users/chun/MyFirstNode/node_modules/express/bin/express' }
npm ERR! 
npm ERR! Please try running this command again as root/Administrator.

npm ERR! System Darwin 10.8.0
npm ERR! command "node" "/usr/local/bin/npm" "link" "express"
npm ERR! cwd /Users/chun/MyFirstNode
npm ERR! node -v v0.8.8
npm ERR! npm -v 1.1.59
npm ERR! path /Users/chun/MyFirstNode/node_modules/express/bin/express
npm ERR! code EPERM
npm ERR! errno 50
npm ERR! stack Error: EPERM, chmod '/Users/chun/MyFirstNode/node_modules/express/bin/express'
npm ERR! 
npm ERR! Additional logging details can be found in:
npm ERR!     /Users/chun/MyFirstNode/npm-debug.log
npm ERR! not ok code 0

chmod ができないとエラーが出るが無視して、

% node app.js

としたら動いてくれましたとさ。めでたしめでたし。



(テンプレートをちょっといじってある)

よく見ると問題が起こっていなさそうなひとは、npm install -g を一般ユーザ権限で行っている。でもそうすると /usr/local/lib に書き込めないし……

参考