
node.js勉強中です。先人の知恵さまのサイトを見る日々が続きます。色んなサンプルサイトで使われいているexpress。雛形を作成してくれる便利なフレームワークです。このexpressを使って雛形をインストールするわけですが、先人の知恵さまサイトではejsが使われてて、自分の環境では何をやっても絶対にjadeがインストールされてしまっていました。今回はなんでそれが起きたのかと、expressでejsがインストールされない方へ向けての対処法を書きます。
※2012/08/18追記
express version 3.xから、ejsの指定の方法が変わったようです。tamaさんにご教授頂きました。ありがとうございます!
express version 3.xでejsを指定する方法
version 2.xまでは、express -t ejsと指定する方法でしたが、version 3.x以降は、express -eでejsが指定されるみたいです。
//バージョンの確認。 $ express version 3.0.0rc3 //ejsを指定する。 $ express -e sample create : sample create : sample/package.json create : sample/app.js create : sample/public create : sample/public/javascripts create : sample/public/images create : sample/public/stylesheets create : sample/public/stylesheets/style.css create : sample/routes create : sample/routes/index.js create : sample/views create : sample/views/index.ejs install dependencies: $ cd sample && npm install run the app: $ node app
ちゃんとejsがインストールされました!^▽^
http://expressjs.com/guide.html
ここに載ってました。^-^;
ここから下は古いバージョンに戻してejsをインストールする方法なので見なくても大丈夫です。
expressでejsをインストールしてみる。
「sample」という名前のフォルダーを作って、その中に雛形を作るコマンドです。-tはテンプレートを選択するオプション。ejsを選択しています。
$ express sample -t ejs create : sample create : sample/package.json create : sample/app.js create : sample/public create : sample/public/javascripts create : sample/public/images create : sample/public/stylesheets create : sample/public/stylesheets/style.css create : sample/routes create : sample/routes/index.js create : sample/views create : sample/views/layout.jade create : sample/views/index.jade install dependencies: $ cd sample && npm install run the app: $ node app
あれ?jadeが入っちゃった。おかしいなぁー。node.jsはバージョンが違うだけで大きく仕様が変わってしまう認識。こういう時はexpressのバージョンを疑いました。
expressのバージョンを確認。
$ express -v error: unknown option `-v'
あれ?なんで使えないの??よし、versionとちゃんとしてみよう。
$ express version 3.0.0beta7
bata7と表示されてしまいました。β版。うーん、怪しい。。。
expressのバージョンを2.xに下げてインストールし直す。
2012年7月29日現時点で、expressをインストールすると、expressのバージョンが3.0.0rc1でインストールされることを確認しました。なので、expressのバージョンを2に下げてみます。install expressの末尾に@をつけてバージョーンを指定します。2.5.8や2.5.11でいいと思います。
//ver.3.0.0rc1がインストールされてしまう。 $ npm install -g express //バージョン指定 $ npm install -g express@2.5.8 //2だけでもOK。この場合、2.5.11がインストールされました。 $ npm install -g express@2
さて、インストールしなおしてみます。
$ npm install express@2.5.8 -g npm http GET https://registry.npmjs.org/express npm http 304 https://registry.npmjs.org/express npm ERR! error rolling back express@3.0.0rc1 Error: EPERM, chmod '/opt/local/bin/express' npm ERR! Error: EPERM, chmod '/opt/local/bin/express' npm ERR! npm ERR! Please try running this command again as root/Administrator. npm ERR! npm ERR! System Darwin 10.8.0 npm ERR! command "node" "/opt/local/bin/npm" "install" "express" "-g" npm ERR! cwd /Users/cotapon npm ERR! node -v v0.6.18 npm ERR! npm -v 1.1.24 npm ERR! path /opt/local/bin/express npm ERR! code EPERM npm ERR! message EPERM, chmod '/opt/local/bin/express' npm ERR! errno {} npm ERR! npm ERR! Additional logging details can be found in: npm ERR! /Users/cotapon/npm-debug.log npm not ok npm not ok
「npm ERR! Error: EPERM, chmod ‘/opt/local/bin/express’」ってことは権限がないってことですね。sudoを使ってインストールします。パスワードを聞かれるので、入力しているとき文字は表示されませんが、入力したらEnterを押します。
$ sudo npm install -g express@2 Password: npm http GET https://registry.npmjs.org/express npm http 304 https://registry.npmjs.org/express npm http GET https://registry.npmjs.org/connect npm http GET https://registry.npmjs.org/mime/1.2.4 npm http GET https://registry.npmjs.org/qs npm http GET https://registry.npmjs.org/mkdirp/0.3.0 npm http 304 https://registry.npmjs.org/connect npm http 304 https://registry.npmjs.org/mime/1.2.4 npm http 304 https://registry.npmjs.org/qs npm http 304 https://registry.npmjs.org/mkdirp/0.3.0 npm http GET https://registry.npmjs.org/formidable npm http 304 https://registry.npmjs.org/formidable /opt/local/bin/express -> /opt/local/lib/node_modules/express/bin/express express@2.5.11 /opt/local/lib/node_modules/express ├── qs@0.4.2 ├── mime@1.2.4 ├── mkdirp@0.3.0 └── connect@1.9.2 (formidable@1.0.11)
無事にインストールできたみたいですね。
$ express -v 2.5.11
さっきは「-v」はエラーでしたが、今度はちゃんとバージョンが確認できました。
今度こそ、expressでejsの雛形を作る!
$ express sample -t ejs create : sample create : sample/package.json create : sample/app.js create : sample/public create : sample/public/javascripts create : sample/public/images create : sample/public/stylesheets create : sample/public/stylesheets/style.css create : sample/routes create : sample/routes/index.js create : sample/views create : sample/views/layout.ejs create : sample/views/index.ejs dont forget to install dependencies: $ cd sample && npm install
ちゃんとejsが認識されてますね。最初はejsのところがjadeだったと思います。さて、最後の仕上げに取り掛かります。「sapmle」というフォルダーに移動してインストールすれば雛形の完成です。
$ cd sample $ npm install npm http GET https://registry.npmjs.org/express/2.5.11 npm http GET https://registry.npmjs.org/ejs npm http 304 https://registry.npmjs.org/ejs npm http 200 https://registry.npmjs.org/express/2.5.11 npm http GET https://registry.npmjs.org/express/-/express-2.5.11.tgz npm http 200 https://registry.npmjs.org/express/-/express-2.5.11.tgz npm http GET https://registry.npmjs.org/mkdirp/0.3.0 npm http GET https://registry.npmjs.org/mime/1.2.4 npm http GET https://registry.npmjs.org/qs npm http GET https://registry.npmjs.org/connect npm http 304 https://registry.npmjs.org/mime/1.2.4 npm http 304 https://registry.npmjs.org/mkdirp/0.3.0 npm http 304 https://registry.npmjs.org/connect npm http 304 https://registry.npmjs.org/qs npm http GET https://registry.npmjs.org/formidable npm http 304 https://registry.npmjs.org/formidable ejs@0.8.0 ./node_modules/ejs express@2.5.11 ./node_modules/express ├── qs@0.4.2 ├── mime@1.2.4 ├── mkdirp@0.3.0 └── connect@1.9.2 (formidable@1.0.11)
できたviewsディレクトリの中を除くと、「index.ejs」と「layout.ejs」ができていると思います。
最後に僕はこう思います。
今回はexpressでejsがインストールできるようにする方法でした。でも、jadeが使えるようになれば、こんなことしなくてもいいはず。しかし、ejsやjadeだけではなくHamlなんかもありますし、これから勉強するにもどれを使って勉強すればいいのかわかりません。JavaScriptでも、jQuery、prototype.js、CoffeeScriptなど、いろんな方法があり、今ではほとんどjQueryが主流になっていると思います。ejsを身に着けてもjadeが主流になったらどうしよう・・・。と悩んでしまうかもしれません。でも、1つ言えるのは、迷ってて手を動かさないよりかはマシと僕は思うので、意味もないかもしれませんが、expressでejsをインストールする方法をまとめました。ejsでnode.jsのサンプルを書いてくれてる先人の知恵の皆様に感謝。僕のような迷える子羊さまが、このページを見て少しでもお役に立てることを願っています。
[…] 次にWebアプリケーションフレームワークexpressを使ってWebサーバ構築する。 link views内にindex.ejsではなくindex.jadeが作成されてしまう。→link […]
[…] 【Node.js】expressでejsがインストール出来ない対処法(追記あり) | creator note […]
[…] に-tを使ってejsかjadeかhamlを選べると書いてあったのだが、この情報は少々古いらしく現バージョンでは-eでejsに切り替えができるようである。jadeのほうがコード量が少なくなるようだけ […]
参考にさせてもらっております。express 3.x系からejsの利用はexpress -e オプションになったようですね。私も最近知りました。
こんにちは!コメントありがとうございます!
おおお!そうなんですね!記事に追記させて頂きます!ありがとうございました!