3
votes

npx webpack insiste pour installer webpack-cli mais il est déjà installé

J'essaye d'exécuter la commande:

PS C:\_ljdev\webpack demo> npm list
webpack-demo@1.0.0 C:\_ljdev\webpack demo
`-- webpack-cli@3.2.3
  +-- chalk@2.4.2
  | +-- ansi-styles@3.2.1
(other dependencies omitted for brevity)

Il me dit qu'il a besoin de webpack-cli et demande s'il doit l'installer, je dis «oui». Ensuite, ça me donne:

PS C:\_ljdev\webpack demo> npm install webpack-cli
npm WARN webpack-cli@3.2.3 requires a peer of webpack@4.x.x but none is installed. You must install peer dependencies yourself.

+ webpack-cli@3.2.3
updated 1 package and audited 1053 packages in 8.034s
found 0 vulnerabilities

Alors j'essaye de l'installer localement, manuellement via:

PS C:\_ljdev\webpack demo> npx webpack
npx: installed 321 in 11.89s
One CLI for webpack must be installed. These are recommended choices, delivered as separate packages:
 - webpack-cli (https://github.com/webpack/webpack-cli)
   The original webpack full-featured CLI.
We will use "npm" to install the CLI via "npm install -D".
Do you want to install 'webpack-cli' (yes/no): yes
Installing 'webpack-cli' (running 'npm install -D webpack-cli')...
npm WARN webpack-cli@3.2.3 requires a peer of webpack@4.x.x but none is installed. You must install peer dependencies yourself.

+ webpack-cli@3.2.3
updated 1 package and audited 1053 packages in 2.093s
found 0 vulnerabilities

{ Error: Cannot find module 'webpack-cli'
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:581:15)
    at Function.Module._load (internal/modules/cjs/loader.js:507:25)
    at Module.require (internal/modules/cjs/loader.js:637:17)
    at require (internal/modules/cjs/helpers.js:22:18)
    at runCommand.then (C:\Users\luke.jenner\AppData\Roaming\npm-cache\_npx\3272\node_modules\webpack\bin\webpack.js:143:5)
    at process._tickCallback (internal/process/next_tick.js:68:7) code: 'MODULE_NOT_FOUND' }

Et je vérifie que il est installé en utilisant:

npx webpack

Il semble donc installé.

J'essaye à nouveau npx webpack et j'obtiens exactement la même sortie et question pour installer webpack-cli

Quelqu'un peut-il me dire pourquoi il ne trouve pas l'installation locale de webpack-cli? Doit-il être installé globalement?

Ou plus curieusement: pourquoi échoue-t-il quand il essaie de l'installer lui-même?


2 commentaires

webpack est-il installé dans le monde?


L'installation globale de webpack va vraiment à l'encontre de l'objectif de l'utilisation de npx, qui est: "Exécute soit à partir d'un node_modules / .bin local, soit à partir d'un cache central, en installant tous les packages nécessaires pour que s'exécute." Consultez cet article pour mieux comprendre à quoi sert npx: medium. com / @ maybekatz /…


3 Réponses :


0
votes

Essayez d'installer webpack-cli globalement.

https://github.com/webpack/webpack-cli/issues/299

Parcourez ce problème sur github.

npm i -g webpack-cli


1 commentaires

L'installation globale de webpack va vraiment à l'encontre de l'objectif de l'utilisation de npx, qui est: "Exécute soit à partir d'un node_modules / .bin local, soit à partir d'un cache central, en installant tous les packages nécessaires pour que s'exécute." Consultez cet article pour mieux comprendre à quoi sert npx: medium. com / @ maybekatz /…



1
votes

J'ai rencontré le même problème.

Après une demi-journée de test, j'ai finalement découvert qu'il y avait des caractères spéciaux dans le chemin de mon projet. Supprimez-les, relancez npx webpack et tout va bien.

Il y a un espace dans le chemin de votre projet, vous pouvez peut-être le supprimer et réessayer. cliquez ici pour vérifier mon résultat

Modifier:

Désolé, je n'ai pas exprimé clairement. Je voulais dire qu'il y avait des caractères spéciaux dans le chemin du projet qui seraient convertis en d'autres lors de l'installation de npm.

Si vous modifiez le nom de votre répertoire de travail, par exemple de webpack-demo à webpack / demo , supprimez et réinstallez webpack et webpack-cli . Puis ouvrez le package.json du package webpack dans le répertoire node_modules , vous trouverez l'attribut _where qui contient le chemin absolu local mais est différent du chemin réel actuel de votre projet .

Je suppose (probablement pas correct, peut-être une autre méthode) que la commande npx utilisera l'attribut _where pour localiser le package webpack . Donc, si le chemin est erroné, npm aura un conseil que vous devriez installer d'abord webpack-cli . Mais même si vous réinstallez le webpack-cli , les autres scripts ne le trouvent toujours pas.


3 commentaires

J'ai supprimé l'espace et cela a fonctionné. Mais ensuite, j'ai remis l'espace et cela fonctionnait toujours ... donc je ne sais pas pourquoi cela fonctionne maintenant. Mais il semble que le fait d'avoir de l'espace sur le chemin ne l'a pas empêché de fonctionner ...


@JTech désolé, j'ai révisé ma réponse. J'espère que ce sera utile.


@JTech, j'ai trouvé la raison. Si vous ouvrez le fichier webpack.js dans le répertoire node_modules / .bin, vous constaterez que le code tente de résoudre le chemin du package webpack-cli et si le package n'est pas résolu, le chemin global par défaut sera utilisé. C'est pourquoi npx webpack fonctionnera si vous installez webpack et webpack-cli globalement.



0
votes

J'ai rencontré cette erreur récemment. La suppression du dossier node_modules et la réinstallation des dépendances avec npm i ont permis à la commande npx webpack ... de fonctionner à nouveau. Je ne peux pas vraiment dire pourquoi ...


0 commentaires