uner-digital / DSpace

UNER-Digital es el repositorio institucional de la Universidad Nacional de Entre Ríos (UNER - http://www.uner.edu.ar/). El desarrollo está basado en DSpace y customizado por el equipo de desarrollo de SEDICI.
Other
1 stars 1 forks source link

Cambiar la versión de Handlebars utilizada por Mirage2 #82

Closed FacundoAdorno closed 7 years ago

FacundoAdorno commented 7 years ago

1. Cambiar la versión de grunt-contrib-handlebars a v0.9.3. 2. Actualizar versión de NodeJS en el servidor a la mas reciente de las versiones LTS Boron.

A partir de un commit introducido por DSpace, se comenzó a utilizar versiones diferentes de Handlebars en el momento de compilación de los archivos *.hbs y en el momento de ejecución (o runtime) del lado cliente (p.e. el explorador). Esto produce un error cuando el browser quiere cargar la página:

Error: Template was precompiled with a newer version of Handlebars than the current runtime. Please update your runtime to a newer version (>= 4.0.0).

Según la configuración de Mirage2, para la compilación se utiliza una versión >=4.0.0 (debido a la dependencia "grunt-contrib-handlebars": "1.0.0", en el archivo package.json), y para la ejecución de Mirage2 del lado cliente se utiliza la versión 2.0.0 (debido a dependencia en archivo bower.json).

La solución propuesta en DS-3419 es cambiar la versión de grunt-contrib-handlebars a la v0.9.3. Sin embargo, para que esto funcione, la versión de nodejs utilizada por MIrage2 debe ser alguna de las mas recientes (p.e. la versión lts boron de nodejs). Si se ejecuta con una versión mas antigua (p.e. yo estaba usando una versión muy vieja: v0.10.32) salta el siguiente ERR:

> bower install

npm ERR! peerinvalid The package grunt does not satisfy its siblings' peerDependencies requirements!
npm ERR! peerinvalid Peer grunt-contrib-coffee@1.0.0 wants grunt@>= 0.4.5
npm ERR! peerinvalid Peer grunt-contrib-compass@1.1.1 wants grunt@>= 0.4.5
npm ERR! peerinvalid Peer grunt-contrib-concat@1.0.1 wants grunt@>=0.4.0
npm ERR! peerinvalid Peer grunt-contrib-handlebars@0.9.3 wants grunt@~0.4.0
npm ERR! peerinvalid Peer grunt-usemin@3.1.1 wants grunt@>=0.4.0
npm ERR! peerinvalid Peer load-grunt-tasks@3.5.2 wants grunt@>=0.4.0

Actualizar nodejs usando nvm

Previo a cualquier cambio, habria que hacer un backup del directorio de ~/.nvm ante cualqueir eventualidad... (cp -r ~/.nvm ~/.nvm_bkp).

Luego los pasos a seguir son:

  1. Instalar la versión mas reciente de NodeJS LTS Boron:
    nvm install lts/boron --reinstall-packages-from=<previous_node_version_used>

    Este instala no solo instala la ultima version de lts/boron, sino que tambien instala todos los paquetes que fueron instalados manualmente en la versión indicada por el parametro --reinstall-packages-from, que en nuestro caso serían las dependencias instaladas para Mirage2: 'grunt', 'grunt-cli' y 'bower'.

  2. Indicar a nvm que la utilice como "default"
    nvm alias default lts/boron
FacundoAdorno commented 7 years ago

Verificando la versión de nodejs en el servidor verifiqué que actualmente está en una versión bastante reciente (lts/boron v6.9.1):

$ nvm list
->       v6.9.1  
default -> 6.9.1 (-> v6.9.1)
node -> stable (-> v6.9.1) (default)
stable -> 6.9 (-> v6.9.1) (default)
iojs -> N/A (default)
lts/* -> lts/argon (-> N/A)
lts/argon -> v4.6.2 (-> N/A)
lts/boron -> v6.9.1
FacundoAdorno commented 7 years ago

El issue DS-3419 ya fue mergeado en el PR 1588 hacia la rama dspace-6_x de DSpace/DSpace.

FacundoAdorno commented 7 years ago

Decidimos actualizar la ultima version de node a la lts/boron v6.10.0. Para esto hay que ejecutar los comandos escritos en la descripcion del issue. Al ejecutar estos comandos, la version anterior que estaba haciendo usada, queda disponible por si se necesita volver a usarla, viéndola listada al ejecutarse nvm list.

FacundoAdorno commented 7 years ago

Se instalo la versión v.6.10.0 (lastest lts/boron) de nodejs en el servidor.

El error causado por la versión runtime de Handlebars ya no ocurre más.