I finally took the time to start fiddling with Node.js, and as I expected from such a young and dynamic technology, I ran into some gotchas and configuration headaches, so I’ll put down some notes here that might be helpful for other people getting started with Node.
As I moved along the tutorial, I ran into the first problem: it uses the formidable node module to handle the file uploads, which is not compatible with the most recent versions of Node (the current one is 0.10.5). Looking into this I found out a couple of interesting facts:
- The versioning scheme of Node states that odd versions are unstable and even versions are stable.
- Since 0.10 is a very recent version, it’s recommended for those starting out to stick with 0.8 (the previous stable version).
So I needed to install version 0.8.something.
At this point I started to feel uncomfortable messing around with different versions on a global Node installation. Neither I liked to sudo everytime I needed to install a new module. There was some misleading advice around the web on doing a chown on your /usr/local folder as a way to avoid this, which didn’t look all that good. Coming from Python and virtualenv I like to handle my installations locally. This is the simplest way to do it I’ve found.
There are several modules that allow handling multiple Node versions, the most popular being nvm and n. I found n was difficult to configure to work with the local installation, so I switched to nvm instead. The code needed to install it and switch to 0.8 was something like:
wget -qO- https://raw.github.com/creationix/nvm/master/install.sh | sh echo '[[ -s ~/.nvm/nvm.sh ]] && . ~/.nvm/nvm.sh' >> .bashrc nvm install 0.8 nvm alias default 0.8