Jugando con NodeJs (1) En Windows (y en Azure)

Published on Author lopezLeave a comment

Hasta unas semanas atrás, la única forma de ejecutar NodeJs en Windows era bajar el código desde el repositorio en Github y compilarlo usando CygWin (otro caso de para tener la banana, hay que llevarse al mono también ;-). Ver:

Building node.js on Cygwin (Windows)
How to install Node.js on Windows

Pero ahora hay una alternativa: el equipo de NodeJs ha publicado una versión para Windows precompilada (0.5.4 y 0.5.5):

http://nodejs.org/#download
http://nodejs.org/dist/
http://nodejs.org/dist/v0.5.4/node.exe
http://nodejs.org/dist/v0.5.5/node.exe

(Hay una nueva versión http://nodejs.org/dist/v0.5.5/node-186364e.exe)

Estoy usando la 0.5.4. Luego de bajarme el exe, ejecuto un simple programa de demo que usa Socket.IO:

Node puede extenderse con módulos escritos en Javascript. El mensaje de arriba me avisa que me falta en módulo SocketIO. El probrama npm es el manejador de paquetes más usado de NodeJs, pero no hay una versión Windows (aún):

how can i do npm on windows!

Así que me bajé el módulo y sus dependencias, como dice:

Node.js on Windows: Who Needs NPM?

¿Dónde están las URLs de las dependencias y sus repos? Pueden ver en:

http://search.npmjs.org/

Me bajé algunos módulos, quedando ahora:

Están en el subdirectorio donde reside el node.exe. El archivo principal a leer y estudiar en cada módulo es su declaración Package.json. Ejemplo, éste es el manifiesto para Socket.IO:

{
    "name": "socket.io"  , 
    "version": "0.7.9"  ,
    "description": "Real-time apps made cross-browser & easy with a WebSocket-like API"  ,
    "homepage": "http://socket.io"  , 
    "keywords": ["websocket", "socket", "realtime", "socket.io", "comet", "ajax"]  , 
    "author": "Guillermo Rauch <guillermo@learnboost.com>"  , 
    "contributors": [        
	{ "name": "Guillermo Rauch", "email": "rauchg@gmail.com" }      , 
        { "name": "Arnout Kazemier", "email": "info@3rd-eden.com" }      ,
        { "name": "Vladimir Dronnikov", "email": "dronnikov@gmail.com" }
     ]  ,
     "repository":{
	    "type": "git"      , 
        "url": "https://github.com/LearnBoost/Socket.IO-node.git"    
     }  ,
     "dependencies": {
        "socket.io-client": "0.7.9"      ,
        "policyfile": "0.0.4"      , 
        "redis": "0.6.6"    
     }  ,
     "devDependencies": {
        "expresso": "0.7.7"      ,
        "should": "0.0.4"      , 
        "assertvanish": "0.0.3-1"
    }  ,
     "main": "index"  , 
     "engines": { "node": ">= 0.4.0" }
}

Cuando tuve todos los módulos, puse el valor de la variable NODE_PATH apuntando al directorio padre de todos los módulos, y ejecuté la aplicación de nuevo:

Triunfo de la mente sobre la materia! 😉 Este fue mi primer manera de ejecutar un programa. Pero recomendaría la alternativa: poner todos los múdulos en un subdirectorio llamado node_modules:

De esta forma, no necesitamos la variable NODE_PATH. Yo uso esa variable porque alguno de mis módulos están en desarrollo en otros directorios. Pero si tienen un subdirectorio node_modules, NodeJs (pienso que desde versión >0.5) busca en ese subdirectorio los módulos requeridos Y TAMBIEN en el NODE_PATH. Entonces puedo usar node_modules directamente y poner adicionalmente NODE_PATH=c:\Git apuntando donde está mi módulo AjFabriq en desarrollo. NodeJs encontrará Socket.IO en el subdirectorio node_modules, y a mi AjFabriq en c:\Git\ajfabriq.

Si tienen problemas con las dependencias, lean el post de @cibrax:

Running the “Express” web development framework on Node for Windows

Ahí explica cómo usar un clon de npm escrito en Python para instalar nuevos módulos y dependencias de NodeJs.

Hasta hay una manera de ejecutar NodeJs dentro de IIS. Vean el post de @shanselman:

Installing and Running node.js applications within IIS on Windows – Are you mad?

Una alternativa interesante a NodeJs que ejecuta en ASP.NET:

Asynchronous scalable web applications with real-time persistent long-running connections with SignalR

Bueno, ¿y si necesitamos ejecutar NodeJs en Azure? Me gustaría escribir un post sobre el tema, pero ….  @ntotten ya me robó la idea ;-). Lean:

NodeJS on Windows Azure

Otros posts sobre NodeJs y Azure:

Node.js, Ruby, and Python in Windows Azure: A Look at What’s Possible | MIX11 | Channel 9

http://channel9.msdn.com/Events/MIX/MIX11

Node.js, Ruby, and Python in Windows Azure: MIX Talk

http://blog.smarx.com/posts/node-js-ruby-and-python-in-windows-azure-my-mix-talk

Posts relacionados sobre NodeJs:

Node.Js: Links, news, Resources (2)

Node.Js: Links, news, Resources (1)

Playing with Node.js, Ubuntu, Sqlite3 and node-Sqlite

Jugando con Node.js, Ubuntu, Sqlite3 y node-Sqlite

Mis enlaces:

http://www.delicious.com/ajlopez/nodejs

Mas jugando con NodeJs en futuros post.

Nos leemos!

Angel “Java” Lopez

http://www.ajlopez.com

http://twitter.com/ajlopez

Leave a Reply

Your email address will not be published. Required fields are marked *