2 votes

npm WARN tar EINVAL après la mise à jour WSL Fall Creators Update

Question :

Je viens de mettre à jour mon installation WSL après avoir installé la mise à jour Fall Creators Update et maintenant quand je lance npm i Je reçois les avertissements suivants de npm Je reçois probablement 2 à 20 de ces avertissements pour des paquets aléatoires à chaque installation, ce n'est jamais cohérent. Parfois, cela fonctionne même, sans avertissement. Je pensais que cela pouvait être correct, mais lorsque je lance mon projet npm run dev Je reçois toutes sortes d'erreurs. Il me semble que les paquets ne sont pas installés correctement. Mais lorsqu'il s'agit de n'a pas montrent des avertissements, l'application fonctionne comme prévu. J'ai testé avec quelques projets aléatoires de GitHub et le même problème.

Versions :

  • Version de NPM : 5.5.1
  • NodeJS Version : 8.9.0
  • Autres facteurs : ZSH

ERROR :

npm WARN tar EINVAL : argument invalide, ouvrir '/mnt/c/Users/Me/Documents/project/node_modules/.staging/parse-json-07a114c7/index.js'.

npm WARN tar EINVAL : argument invalide, ouvrir '/mnt/c/Users/Me/Documents/Project/node_modules/.staging/esrecurse-fe2bc2eb/package.json'.

Notes :

  • J'ai essayé une nouvelle installation de WSL, même problème.
  • peut s'installer globalement sans problème, mais ne semble échouer que dans le cadre de l'installation de l'appareil. /mnt/** chemin.
  • Je peux confirmer qu'il fonctionne dans les dossiers Linux, que l'installation a réussi dans le répertoire personnel, mais qu'il ne fonctionne pas dans le répertoire personnel. /mnt/**

EDIT : Après beaucoup de dépannage j'ai décidé de fonctionner sans ZSH et de revenir à l'utilisation de bash.exe au lieu de la proposition wsl.exe . La première installation a fonctionné. Je continue à tester.

3voto

Auzy Points 840

Le problème venait en fait de la mise à jour Fall Creators Update. De nombreuses optimisations ont été effectuées et il semble que quelque chose en rapport avec l'établissement de liens symboliques entre les disques montés ait posé problème. Voir toute la conversation technique aquí

Il existe deux solutions, la première, recommandée, a déjà été corrigée par l'équipe WSL et se trouve dans la Build 17035 d'Insiders. Cette correction nécessite d'aller dans Settings -> Insiders -> Sélectionner "get Active Builds" et ensuite "Fast Ring". Ne le faites que si vous avez l'habitude de gérer les ruptures occasionnelles, car il s'agit essentiellement d'un logiciel bêta.

La deuxième solution, recommandée si vous ne pouvez pas mettre à jour ou si vous ne vous sentez pas à l'aise avec les Builds des Insiders, est d'ajouter ceci à vos .bashrc fichier :

if ! mount | grep -q "C: on /mnt/c type drvfs (rw,noatime,fallback=1)"; then
    echo "== Remount of C: drive required =="
    pushd ~ > /dev/null
    sudo umount /mnt/c
    sudo mount -t drvfs -o noatime,fallback=1 C: /mnt/c
    popd > /dev/null
fi

En .bashrc Cette solution supprime cependant de nombreux gains de performance et ne doit être utilisée que si elle est vraiment nécessaire.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X