All These Things That I've Done

Apply the programming model to everyday programming problems
posts - 83, comments - 71, trackbacks - 4

My Links

News


View Gianluca Carucci's profile on LinkedIn

Tag Cloud

Archives

Post Categories

Image Galleries

Blogs

Links

Thursday, February 5, 2015

Visual Studio 2015 ASP.NET 5, project name e l'errore "install Couldn't read dependencies"

Visual Studio 2015 ha introdotto una nuova modalità di gestione delle librerie e degli asset client side (javascript, typescript, coffescript, css, less...) di un progetto ASP.NET: infatti da questa versione, l'ide si affida ad un tool molto diffuso e apprezzato tra le community open source: Bower.

Bower è un package manager scritto in nodejs, che ha il compito di scaricare e gestire le librerie client side (per quelle server side rimane valido NuGet). Come tutte le librerie basate su nodejs, la modalità di default d'installazione è tramite il package manger di nodejs: npm.

Qual'è il problema?

 Quando creiamo un nuovo progetto Visual Studio 2015, dal template 'ASP.NET 5 Starter Web' e diamo un nome contenente un carattere accentato, scopriremo che:

  • la build fallisce e apparentemente non si trova l'errore
  • da solution explorer il nodo "Bower" sotto le "dependencies" (che dovrebbe contenere le librerie client del template come jquery, bootstrap...) è vuoto e non è abilitata l'opzione "Restore Packages"
  • da solution explorer il nodo "NPM" sotto le "dependencies" indica che i packages: grunt, grunt-bower-task non sono stati scaricati

Mettendo insieme questi indizi, e soprattutto aprendo la finestra "Package Manager Log", si trova un errore simile a questo:

Visual Studio infatti scarica le dipendenze dei tools (tra cui bower) usando il comando npm install. Quest'ultimo per funzionare ha bisogno che nella directory corrente ci sia il file package.json (file aggiunto automaticamente dal template di Visual Studio) il quale contiene alcune informazioni tra cui l'elenco delle dipendenze (un po' come il file packages.config di NuGet) e il nome del progetto; ecco il problema: npm esegue una validazione del nome (notare l'errore: 6 error Error: Invalid name: "ragù") e se questo non super la validazione, il comando install fallisce senza scaricare i tool (tra cui bower), e gli asset client del progetto (tramite bower).

Indagando un po' ci imbattiamo nella funzione ensureValidName che fallisce poichè i caratteri accentati non sono ammessi. Il codice del metodo è il seguente:

In definitiva, fate attenzione al nome del progetto che scegliete o in alternativa, modificate il nome all'interno del file package.json.

Concludendo: perchè dobbiamo cambiare modo di gestire i progetti web rischiando di ricevere errori anche da tool fino ad ora non utilizzati?

Di questo e di tutto ciò che riguarda  Npm, Grunt, Bower e il nuovo package manager di Visual Studio 2015, parleremo il 26 marzo ai CommunityDays di quest'anno.

Ci vediamo là?

posted @ Friday, February 6, 2015 9:56 AM | Filed Under [ JavaScript Visual Studio ]

Powered by:
Powered By Subtext Powered By ASP.NET