Introducción a Node.js, parte 7: Instalar Express

Seguimos navegando por este misterioso mar llamado Node.js, y en esta ocasión vamos a comenzar con Express, un framework muy bueno que nos permitirá acceder a las funcionalidades que nos provee Node, pero en forma mucho más fácil y rápida.

Ahora bien, antes de comenzar voy a aclarar algunos detalles. Node es autosuficiente, con esto me refiero a que al igual que otros lenguajes de programación como PHP, no necesita de un framework, no tiene un límite, y todo lo que podemos hacer con un framework, lo podemos hacer sin éste. Sin embargo, los que venimos creando aplicaciones web y cansados de reinventar la rueda después del comienzo de cada proyecto, sabemos de la importancia de un framework y cómo nos agiliza el trabajo.

¡Comencemos!

Para instalar Express no tendremos que descargarnos nada, ya que la instalación la podremos realizar desde la misma consola.

Vamos a entrar dentro de nuestra carpeta de nodejs, por ejemplo en mi caso que tengo Windows, yo lo tengo dentro de “C:\Program Files\nodejs”:

cd C:\Program Files\nodejs

Y ahí dentro vamos a ingresar lo siguiente:

npm install -g express

Listo, ya tenemos Express en nuestro sistema.

Crear un nuevo proyecto

Como todo framework, Express presenta un esqueleto con directorios que nos permitirán separar las distintas funcionalidades del sistema como por ejemplo las vistas. Para instalar ese árbol de directorios, vamos a posicionarnos dentro de la carpeta nodejs, y ahí dentro vamos a crear una nueva carpeta a la que yo voy a llamar: “primer_proyecto_express”

Vamos a entrar dentro de esa carpeta:

cd primer_proyecto_express

Y vamos a escribir desde la consola lo siguiente:

express

Una vez creado el esqueleto nos informará que sería bueno instalar también las dependencias, lo que ya veremos más adelante. Así que vamos a hacerle caso y vamos a instalarlas:

npm install

Bien, ahora que ya tenemos nuestro proyecto instalado podemos iniciarlo. Si entramos ahora dentro del mismo veremos que hay un archivo llamado app.js. Éste es nuestro archivo principal, así que vamos a compilarlo:

node app.js

Posible error de puerto

La aplicación por defecto escuchará en el puerto 3000, sin embargo, puede ser que en tu sistema este puerto esté ocupado por otro programa, y entonces te devolverá un error por consola. Para solucionar esto vamos a editar ese archivo app.js, y vamos a buscar la línea:

app.set('port', process.env.PORT || 3000);

Vamos a modificar ese puerto: 3000, por otro, por ejemplo 8888 u otro puerto que no esté ocupado, y vamos a volver a compilar el archivo app.js desde la consola.

Una vez compilado el archivo, vamos a abrir un navegador y a ingresar la siguiente dirección:

https://localhost:3000/

(Si cambiaste el puerto 3000, también tendrás que hacerlo aquí)

Posible error de doctype

En mi caso, al intentar entrar al navegador, me devolvió por pantalla un mensaje de error con algo como: “doctype 5` is deprecated”, tal vez a vos no te suceda, pero de ser así, haremos lo siguiente. Vamos a editar el archivo dentro de nuestro proyecto a view -> layout.jade y a buscar:

doctype 5

Y vamos a reemplazarlo por:

doctype

Ahora, al recargar la página debería aparecernos el mensaje: “Welcome to Express”

El archivo que hemos modificado layout.jade, es un archivo de plantilla. Express utiliza un motor de plantillas llamado jade, que nos permitirá escribir código html mucho más breve, pero ya habrá tiempo para ver más de esto.

También tenemos que tener en cuenta que el archivo app.js, que como dije antes es el archivo principal de Node, aquí definiremos los distintos eventos de la aplicación como por ejemplo la conexión a la base de datos. Obviamente también podemos utilizar módulos y llamar a funciones de estos para mantener todo ordenado a medida que crezca nuestro proyecto.

Para hacer una pequeña prueba, vamos a editar este archivo y vamos a buscar las siguientes líneas:

app.get('/', routes.index);
app.get('/users', user.list);

Aquí por defecto la aplicación está definiendo dos acciones mediante el evento get(). Acciones que podrán ser accedidas desde la página principal y el path ‘/users’. Vamos a crear nuestra propia acción agregando debajo de esas líneas lo siguiente:

app.get('/prueba', function(req, res){
   res.send('Acción de prueba');
});

Como vemos, el evento .get() recibirá dos parámetros, el primero es el path y el segundo un callback, que se disparará cada vez que un usuario ingrese a esa dirección. A su vez este callback recibirá dos parámetros, el primero es la petición y el segundo la respuesta.

Vamos a volver a compilar el archivo app.js, y a ingresar a la dirección:

https://localhost:3000/prueba

Aquí veremos el texto que enviamos mediante el evento send() del objeto res, la respuesta al navegador.

Bueno, con esto terminamos por hoy.

Saludos!

Anterior: Introducción a Node.js, parte 6: Envío de archivos

Siguiente: Introducción a Node.js, parte 8: Express y Jade

Redes sociables

    31 Replies to “Introducción a Node.js, parte 7: Instalar Express”

    1. Amigo muy buen tutorial, me quedé en la parte que hay que poner npm install en la consola…me salta error, nose que estaré haciendo mal…por cierto tengo windows

      1. Erik, yo también uso Windows.

        Es muy extraño lo que me decís. Vos podrías indicarme el error que te devuelve por consola?

        Saludos!

        1. Quizá fuera por los permisos, que si no tienes permisos para crear directorios te dará error, pues me estaba pasando a mi también. Si le cambias los permisos ya pudes ejecutar el express y luego install

      2. Trata de volver a instalar express con este comando: “npm install -g express-generator” y al instalarlo, en vez de escribir solamente “express”, escribe: express nombre_del_tu_proyecto.

        Con el comando express, creas un proyecto con esta libreria.

    2. Hola soy nuevo en node js y tus tutoriales me han ayudado mucho, con respecto a el error que le sale al amigo Erick posiblemenet sea que debe insertar la instruccion express [carpeta] donde lo desea instalar y listo, ami también me pasó ahora mi problema es que ya segui en especifico lo de este tuto y no me sale error ni nada soloo al compilar app.js no me muestra que este corriendo el servidor y ejecutar el localhost no corre ya que no arranco

      1. A ver si entiendo, compilás el archivo app.js, y no te devuelve ningún error, pero al entrar en el navegador no encuentra la página?

          1. La nueva version del framework no incluye en app.js la parte del listen para levantar el servidor.

            Añade al final de app.js

            app.listen(3000, function(){

            console.log(‘Escuchando en el puerto 3000’);
            });

            1. Por supuesto la forma correcta sin añadir esta linea es la siguiente en linux (bajo windows sera similar)
              Si miras el fichero package.json
              en el apartado scripts te dice como arrancarlo
              “scripts”: {
              “start”: “node ./bin/www”
              },

              Por tanto en la consola dentro la carpeta del proyecto ejecutamos: node ./bin/www
              Y ya nos arrancara el servidor en el puerto 3000.

              Por tanto la compilación usando “node app.js” no se hace en la nueva versión de express aunque por desgracia lo encontraras en casi todos los manuales de la red.

              Un saludo.

    3. En primer lugar, enhorabuena por el tutorial, me está ayudando muchísimo.

      Tengo un problema con la instalación global de express, la cual al parecer se realiza correctamente (en la carpeta AppData\Roaming…), pero al intentar lanzarla desde la consola para crear la estructura me devuelve

      He probado a desinstalar y volver a instalar node y express, ejecutar en modo administrador, indicar en las variables de entorno la ruta de la carpeta npm en roaming, pero nada.

      Muchas gracias por la ayuda y el buen trabajo realizado.

      1. al intentar lanzarla desde la consola para crear la estructura me devuelve “express” no se reconoce como un comando interno o externo, programa o archivo por lotes ejecutable

          1. Si. También la he hecho en modo local, creándose la carpeta node_modules con express en mi proyecto, pero sigo sin poder nombrarlo desde consola.

            Pensando que podría ser problema de Win7, probé en otro equipo con XP, pero se presenta el mismo problema.

            He instalado la última versión de nodejs node-v0.10.26-x86. La versión de express que se instala es la 4.0.0

            En las variables de entorno tengo en variable de usuario C:\Users\antonio\AppData\Roaming\npm
            y de sistema C:\Program Files\nodejs\.

            ¿Es posible que se requiera de alguna instalación o configuración previa a la instalación de nodejs o alguno de los módulos?

            Saludos

            1. Hola de nuevo.

              Paseándome Sangoogle he descubierto el siguiente comando, npm install -g express-generator, el cual una vez ejecutado sí que permite lanzar express desde consola y crear la estructura del proyecto.

              Un saludo y de nuevo gracias Ferchu por esta gran guía.

    4. Primero que todo gracias por el tutorial.
      Al agregar el siguiente codigo :

      app.get(‘/prueba’, function(req, res){
      res.send(‘Acción de prueba’);
      });

      y volver a ejecutar el servidor con la url “http://localhost:3000/prueba”
      me muestra : Not Found 404 en la pagina.

      Saludos y gracias de ante mano.

      1. Joel, cada vez que hacés una modificación en el archivo app.js, tenés que reiniciar el servidor con node app.js

        Saludos!

    5. Hola una consulta, a mi me pasa que al correr node app.js en la consola, me manda el siguiente error: Cannot find module ‘Static-favicon’, de antemano gracias por la ayuda.

    6. Hola, a mi me muestra el siguiente error:
      route.get() requires callback functions but got a [object undefined]
      at C:\Program Files\nodejs\primer_proyecto_express\node_modules\express\lib\router\route.js
      a que se debera??

    7. Hola, genial el tutorial antetodo, para empezar uso ubuntu 14.04, la instalación sin un fallo, pero al ejacutarlo en el navegador solo me sale welcome express, en mi caso esta instalado en la raiz /var/www/html/. ¿me podeis ayudar?

      1. Tere, cada vez que modifiques el archivo app.js, tenés que reiniciar el servidor escribiendo en la consola:

        Será eso?

    8. Buenas.
      Uso NodeJs en Linux sin ningun problema (para variar) pero en la oficina intente instalarlo en Windows y funciona.
      Lo que no funciona es el “npm”, me devuelve lo siguiente:

      Error: npm doesn’t work with node v0.10.30
      Required: node@0.6 || 0.7 || 0.8
      at C:\Program Files\nodejs\node_modules\npm\bin\npm-cli.js:60:23
      at Object. (C:\Program Files\nodejs\node_modules\npm\bin\npm-cli.
      js:80:3)
      at Module._compile (module.js:456:26)
      at Object.Module._extensions..js (module.js:474:10)
      at Module.load (module.js:356:32)
      at Function.Module._load (module.js:312:12)
      at Function.Module.runMain (module.js:497:10)
      at startup (node.js:119:16)
      at node.js:906:3

      Me llama mucho la atencion la primer linea donde dice que npm no funciona con NodeJs 0.10.0.30

      Tal cual lo dice el error, el NodeJS instalado es el 0.10.30.
      Todo en Win 8.1
      Alguina sugerencia?

      Gracias!!

    9. Hola ferchu, te quiero felicitar por tu tutorial, me ha ayudado mucho, pero ahora tengo un incoveniente, al parece instale una version de express y jaden diferente (o mas reciente), debido a que ya no ejecuto el apps.js, si no la direccion que esta en package.json: node ./bin/www

      Y por lo tanto, el arcivo apps.get es diferente y las lineas de “apps.get” que nos indicas cambiar, ya no esta, debido a que la estructura es diferente.

      Express es muy buena libreria pero aparentemente, se va actualizando y cambiando la estructura, y no logro ubicarme. Esto desgraciadamente es una gran muralla para aquellos, como yo, que apenas vamos empezando y no comprendemos bien que y en donde debemos modificar el codigo.

      Seria muy bueno que, pudieras actualizar el tutorial de express, por que desgraciadamente ya no es la misma y mas de uno se queda estancado en le camino. Muchas gracias y un saludo.

      1. Sí, es cierto lo que decís. Lamentablemente cambiaron demasiadas cosas en las últimas versiones. Por ejemplo lo del app.js que ya no existe.

        La realidad es que ahora cuento con poco tiempo y hay tantos cambios, que prácticamente debería borrar todas las publicaciones y volver a crearlas.

        Veré que puedo hacer.

        Saludos!

    Comments are closed.