2015-03-31 10 views
5

Sto giocando con il progetto MVC6 + Aurelia in Visual Studio 2015 CTP6 e ho trovato qualcosa di interessante.Errore "FullPath non può essere applicato" per node_modules nidificati in VS2015 CTP6

Il mio node_modules è di default nella radice del progetto e tutto funziona correttamente. Tuttavia, mi piacerebbe mantenere l'albero dei sorgenti un po 'più organizzato e spostato node_modules, jspm_modules e materiale correlato in una sottocartella - ad es. MyApp\client\node_modules ecc.

Ma ora Visual Studio interrompe il caricamento del progetto. Ecco eccezione da "VsProjectFault.failure.txt":

(Inner Exception #1) System.InvalidOperationException: The item metadata "%(FullPath)" cannot be applied to the path "client\node_modules\conventional-changelog\node_modules\lodash.assign\node_modules\lodash._basecreatecallback\node_modules\lodash.bind\node_modules\lodash._createwrapper\node_modules\lodash._basecreatewrapper\node_modules\". C:\Work\xxxxxxxxxx\xxxxxxxxxx.xxx\src\client\node_modules\conventional-changelog\node_modules\lodash.assign\node_modules\lodash._basecreatecallback\node_modules\lodash.bind\node_modules\lodash._createwrapper\node_modules\lodash._basecreatewrapper\node_modules\ 
    at Microsoft.Build.Shared.ErrorUtilities.ThrowInvalidOperation(String resourceName, Object[] args) 
    at Microsoft.Build.Shared.ErrorUtilities.VerifyThrowInvalidOperation(Boolean condition, String resourceName, Object arg0, Object arg1, Object arg2) 
    at Microsoft.Build.Shared.FileUtilities.ItemSpecModifiers.GetItemSpecModifier(String currentDirectory, String itemSpec, String definingProjectEscaped, String modifier, String& fullPath) 
    ... 
    at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 
    at Microsoft.VisualStudio.ProjectSystem.Utilities.DataflowExtensions.<>c__DisplayClass37`2.<<CreateSelfFilteringTransformBlock>b__38>d__0.MoveNext() 

A quanto pare il problema è nel node_modules percorso ricorsivo essere troppo lungo - e non c'è bug #6960 nel Nodo inseguitore

nodo ha bisogno di un approccio alternativo alla infinita, cartelle annidate in modo ricorsivo node_modules su Windows. La maggior parte degli strumenti, delle utilità e delle shell di Windows non possono gestire percorsi di file e cartelle più lunghi di 260 caratteri al massimo.

... che sembra closed as won't fix a me:

nodo non sta per cambiare, quindi questo non è davvero un problema Node. Il problema non è con la semantica di caricamento del modulo, ma con la semantica di installazione del modulo . (I due sono correlati, ma non identici.)

Ma allora non capisco come mai il progetto stava caricando in primo luogo, perché alcuni percorsi sono sicuramente più di 260 simboli anche se node_modules è nell'ambito del progetto radice!

C'è qualche impostazione in config o qualcosa che aiuti Visual Studio 2015 a caricare il progetto con node_modules, cosa sta succedendo?

+1

questo può essere sempre peggio. Suggerirò di presentare un problema su github, il team Microsoft è molto reattivo e aperto per rintracciare quegli scenari. Per quello che vale, ci sono alcuni ragazzi che lavorano sul flusso di NET5 con aurelia a causa del file system wwwroot, quindi forse dovresti anche dare un'occhiata a https://gitter.im/Aurelia/Discuss <- ragazzi fantastici lì. –

risposta

1

sono riuscito a risolvere questo problema in una macchina di sviluppo di Windows 10, consentendo la Win32 lunghi percorsi di politica utilizzando l'Editor Criteri di gruppo. Ecco i passi necessari (a seconda se hai la Anniversario aggiornamento installato o meno):

Prima Anniversario Aggiornamento

Se si sta eseguendo una build di Windows 10 tra il 14352 e il RTM 1607, aka “Anniversario Update”, è necessario effettuare le seguenti operazioni:

  • lancio della politica gruppo Editor premendo Windows Key e digitando manualmente gpedit.msc, poi ha colpito il 012.chiave.
  • Spostarsi Local Computer Policy>Configurazione computer>Modelli amministrativi>Sistema>Filesystem>NTFS
  • Individuare il Abilita percorsi lunghi NTFS opzione e attivare con un click .

In alternativa, è anche possibile ottenere gli stessi risultati eseguendo il seguente Registro di comandi:

Windows Registry Editor Version 5.00 

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\FileSystem] 
"LongPathsEnabled"=dword:00000001 

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem] 
"LongPathsEnabled"=dword:00000001 

Dopo Anniversario Aggiornamento

Se si sta eseguendo un aggiornamento post-Anniversary Windows 10 build (RTM 1067 o più recente), è necessario utilizzare quanto segue:

  • Avviare l'Editor dei criteri di gruppo premendo Windows Key e digitando manualmente gpedit.msc, quindi premere la chiave .
  • Spostarsi Criteri del computer locale>Configurazione computer> Modelli amministrativi >Sistema>Filesystem
  • individuare l'opzione Enable Win32 long paths e attivare con un click.

Nel caso in cui siano necessari ulteriori dettagli sull'argomento, è possibile anche read this post.

0

ho trovato, è possibile spostare il tuo file di soluzione nella cartella stessa in cui è presente il tuo progetto. L'errore è causato dal fatto che Windows ha un criterio di percorso che limita il numero di caratteri forniti nel percorso di esecuzione.

client\node_modules\conventional-changelog\node_modules\lodash.assign\node_modules\lodash._basecreatecallback\node_modules\lodash.bind\node_modules\lodash._createwrapper\node_modules\lodash._basecreatewrapper\node_modules\". C:\Work\xxxxxxxxxx\xxxxxxxxxx.xxx\src\client\node_modules\conventional-changelog\node_modules\lodash.assign\node_modules\lodash._basecreatecallback\node_modules\lodash.bind\node_modules\lodash._createwrapper\node_modules\lodash._basecreatewrapper\node_modules\ 

basta spostare il file di progetto (l'intera soluzione con tutti i pacchetti) nella cartella Lavoro/xxxx e questo sarebbe risolverlo.

0

sembra che il progetto supera MAX_PATH, Si può provare a spostare il progetto per un percorso più breve (ad esempio, c: \ src) Per ulteriori informazioni, si prega di controllare here

Problemi correlati