Cloud9を触ってみた。
ubuntu 10.10にCloud9環境を構築してみました。
http://codedehitokoto.blogspot.jp/2012/01/nodeidecloud9.html
上記ページを参考にやってみました。
既にGitやNode.jsはインストール済みである前提です。
Node.jsをまだインストールしていない場合は、Node.jsを触ってみたを参照してインストールしてください。
Gitに関しては、Google先生に聞けば山ほど情報があると思います。
で、本題です。
$ git clone git://github.com/ajaxorg/cloud9.git
$ cd cloud9/bin/
$ ./cloud9.sh
とすると、こんなエラーが発生。
Error: Cannot find module 'dryice'
at Function._resolveFilename (module.js:320:11)
at Function._load (module.js:266:25)
at require (module.js:348:19)
at Object.(/Users/cmeier/workspace/clojureland/
workspace/ace/Makefile.dryice.js:39:12)
at Module._compile (module.js:404:26)
at Object..js (module.js:410:10)
at Module.load (module.js:336:31)
at Function._load (module.js:297:12)
at Array.(module.js:423:10)
at EventEmitter._tickCallback (node.js:126:26
ネットを色々検索していると、
$ sudo npm link .
をすれば?的なコメントがあったのでやってみてもこんなエラーが発生。
Error: Each commonjs root should be a directory: /home/tomotaro1065/cloud9/node_modules/ace/lib
at CommonJsProject.(/home/tomotaro1065/cloud9/node_modules/dryice/lib/dryice/index.js:665:13)
at Array.map (native)
at new CommonJsProject (/home/tomotaro1065/cloud9/node_modules/dryice/lib/dryice/index.js:663:27)
at Function.copy.createCommonJsProject (/home/tomotaro1065/cloud9/node_modules/dryice/lib/dryice/index.js:936:10)
at worker (/home/tomotaro1065/cloud9/Makefile.dryice.js:43:30)
at main (/home/tomotaro1065/cloud9/Makefile.dryice.js:35:9)
at Object.(/home/tomotaro1065/cloud9/Makefile.dryice.js:100:5)
at Module._compile (module.js:449:26)
at Object.Module._extensions..js (module.js:467:10)
at Module.load (module.js:356:32)
どうやらaceというモジュールが必要なんだろうと思い、
$ sudo npm install ace
$ sudo npm install treehugger
なんかをやってみても、
@@@@ FATAL ERROR: DRYICE FAILED { '0': 'Failed to find module: ace/lib/fixoldbrowsers' }
make: *** [plugins-client/lib.ace/www/worker/worker-language.js] エラー 1
Linux 64 bit
path.existsSync is now called `fs.existsSync`.module.js:340
throw err;
^
Error: Cannot find module 'asyncjs'
at Function.Module._resolveFilename (module.js:338:15)
at Function.Module._load (module.js:280:25)
at Module.require (module.js:362:17)
at require (module.js:378:17)
at Object.(/home/tomotaro1065/cloud9/plugins-server/cloud9.process-manager/process_manager.js:11:13)
at Module._compile (module.js:449:26)
at Object.Module._extensions..js (module.js:467:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.require (module.js:362:17)
もう完全にブチ切れました。もうCloud9なんて知るかぁ!!
しかし、何とか思いとどまりました。こんははずはない。何か間違っているはずだと。
あきらめずに検索していると、下記のサイトを発見。
http://ubuntuforums.org/showthread.php?t=1813076
先ほどのサイトとは少し手順が違うみたいなのでやってみた。
$ git clone git://github.com/ajaxorg/cloud9.git
$ cd cloud9
$ git checkout devel
$ git submodule update --init --recursive
$ bin/cloud9.sh
おぉ〜。動いたぁ!
と思ったのもつかの間。
$ bin/cloud9.sh -w ~/nodework/express-hellocl/
expressで生成したプロジェクトをCloud9に読み込ませて、ポート番号だけ変更して(Cloud9が既に3000番を使っているため。)実行するも、zlibがないとかってコンソールに出る。
node.js:116
throw e; // process.nextTick error, or 'error' event on first tick
^
Error: Cannot find module 'zlib'
at Function._resolveFilename (module.js:299:11)
at Function._load (module.js:245:25)
at require (module.js:327:19)
at Object.(/usr/local/lib/node_modules/express/node_modules/connect/lib/middleware/compress.js:14:12)
at Module._compile (module.js:383:26)
at Object..js (module.js:389:10)
at Module.load (module.js:315:31)
at Function._load (module.js:276:12)
at require (module.js:327:19)
at Object.compress (/usr/local/lib/node_modules/express/node_modules/connect/lib/connect.js:89:14)
引き続き、色々調べてみると、どうやらNode.jsのバージョンが0.6よりも古いとこのようなエラーが出ることがあるという情報に行き着いた。
が、自分が入れているNode.jsは0.8.11。おかしい。。。と思っていたら、Cloud9.shの中を見てみると、Cloud9に添付されているNode.jsを起動しており、そのバージョンが0.4系であることが判明。
なぜ、今頃0.4。。。
Cloud9.shを0.8.11のNode.jsを起動するように書き換えて実行してみた。すると、今度は下記のようなエラーが発生。
Error: require.paths is removed. Use node_modules folders, or the NODE_PATH environment variable instead.
at Function.Module._compile.Object.defineProperty.get (module.js:386:11)
at Object.(/usr/local/lib/node_modules/cloud9/support/paths.js:7:8)
at Module._compile (module.js:449:26)
at Object.Module._extensions..js (module.js:467:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.require (module.js:362:17)
at require (module.js:378:17)
at Object.(/usr/local/lib/node_modules/cloud9/bin/cloud9.js:6:1)
at Module._compile (module.js:449:26)
色々と調べて、
$ export NODE_PATH=/usr/local/lib/node_modules/
などをやってみるも変化なし。どうも新しいバージョンのNode.jsではrequire.pathsが削除されたが、Cloud9で使用しているためのエラーっぽいです。
ん。。。完全に手詰まりかと思っていた時に。
$ npm -g install cloud9
だけでインストールできて楽チンだよね。みたいな記事を発見。
まじか。今までの苦労は?と思ったが、とりあえず藁にもすがる思いでやってみるも、
Error: require.paths is removed. Use node_modules folders, or the NODE_PATH environment variable instead.
at Function.Module._compile.Object.defineProperty.get (module.js:386:11)
at Object.(/usr/local/lib/node_modules/cloud9/support/paths.js:7:8)
at Module._compile (module.js:449:26)
at Object.Module._extensions..js (module.js:467:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.require (module.js:362:17)
at require (module.js:378:17)
at Object.(/usr/local/lib/node_modules/cloud9/bin/cloud9.js:6:1)
at Module._compile (module.js:449:26)
なんじゃい、それは!!
もうあきらめようと何度も思いましたが、ふとCloud9のフォルダを眺めているとREADME.mdファイルが目に留まりました。
何気なく中身を見てみると、なんとインストール方法が書いとるやないかぁ!!
何々。sourcemintでソース管理をするようになった?
$ sudo npm install -g sm
$ git clone https://github.com/ajaxorg/cloud9.git cloud9
$ cd cloud9
$ sudo sm install
$ bin/cloud9.sh -w ~/nodework/express-hello/
とりあえず、Cloud9は起動した。が、app.jsをダブルクリックして開こうとすると、
http.js:686
throw new Error('Can\'t render headers after they are sent to the client.'
^
Error: Can't render headers after they are sent to the client.
at ServerResponse.OutgoingMessage._renderHeaders (http.js:686:11)
at ServerResponse.res._renderHeaders (/home/tomotaro1065/cloud9/node_modules/connect/lib/patch.js:76:25)
at ServerResponse.writeHead (http.js:950:20)
at module.exports.getList (/home/tomotaro1065/cloud9/plugins-server/cloud9.ide.filelist/filelist-plugin.js:77:33)
at Socket.(/home/tomotaro1065/cloud9/plugins-server/cloud9.ide.filelist/filelist.js:55:17)
at Socket.EventEmitter.emit (events.js:88:17)
at Pipe.onread (net.js:390:31)
シュン。。。なんでやねん。。。もういややぁ。無理!!!
気を取り直してMac OS Xで再挑戦。
なぜか、Mac OS XではREADME.mdに書いてある方法で、正常に動いている模様。おぉ、ブレークポイントも止まるし、ステップ実行も出来るやん。変数の中身も見れる。
Windowsでは動くんかなぁ。。。
あれ?sourcemintのインストールで失敗してる。
まぁ、良いか。Windowsやし。気にしない、気にしない。(^^;
Ubuntuでは何で動かないんかなぁ。。。色々と試行錯誤でごちゃごちゃしてたから、変なごみでも残ってるんかなぁ。今度、クリーンにして、最初からやってみようか。