106 votes

Laravel 5.4 "cross-env" n'est pas reconnu comme une commande interne ou externe

J'essaie d'exécuter npm run dev pour Laravel Mix et j'obtiens cette erreur :

> @ dev D:\projects\ptcs
> cross-env NODE_ENV=development webpack --progress --hide-modules --
config=node_modules/laravel-mix/setup/webpack.config.js

'cross-env' is not recognized as an internal or external command,
operable program or batch file.
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! @ dev: `cross-env NODE_ENV=development webpack --progress --hide-
modules --config=node_modules/laravel-mix/setup/webpack.config.js`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the @ dev script.

J'ai mis à jour node.js en 6.11.0 et npm en 5.2.0, mais cela n'a pas aidé. J'utilise Homestead sous Windows 7.

0 votes

Je pense que cela dépend si vous exécutez puis installez à partir de Homestead ou de Windows 7, car il installe des bibliothèques spécifiques à l'OS.

0 votes

Pour moi, la réinstallation de la dernière version de node.js (8.9) a réglé ce problème.

0 votes

Après les conseils de Yevgeniy Afanasyev si vous rencontrez cette erreur : > Le CLI a été déplacé dans un paquet séparé : webpack-cli. Vous devez exécuter cette commande : $ npm install webpack-cli -D

250voto

Yevgeniy Afanasyev Points 14

Vous devez faire en sorte que le cross-env fonctionne globalement au lieu de l'avoir dans le projet.

1) retirer node_modules dossier

2) courir

npm install --global cross-env

3) retirer "cross-env": "^5.0.1", de package.json fichier devDependencies section. En fait, vous pouvez sauter cette étape et garder le package.json intact. Si vous préférez.

4) courir

npm install --no-bin-links

5) courir

npm run dev

et le voir fonctionner

P.S Testé sur Windows 10 avec Laravel-5.4

P.P.S Windows 10 avec Laravel-5.6 n'a pas ce problème, donc mise à jour de est une solution alternative.

0 votes

Il a été testé et confirmé comme fonctionnant sur Ubuntu en tant que boîte virtuelle sur Vagrant avec Laravel 5.4 (Homestead). Avec win10 comme système d'exploitation de base.

1 votes

Parce que je ne savais pas pour quoi la commande npm install --no-bin-links est utilisé (même en faisant des recherches, je ne comprenais pas), j'ai évité de l'utiliser, et ça a marché. Pourquoi est-ce nécessaire ?

0 votes

Les "liens binaires" sont similaires aux "raccourcis" pour Windows, mais les liens binaires fonctionnent sous Linux. Comme vous avez vos fichiers sur l'hôte Windows, vous n'avez pas besoin de liens binaires au format Linux pour y être installé.

39voto

flik Points 903

Premier passage :

rm -rf node_modules
rm package-lock.json yarn.lock
npm cache clear --force

Ensuite, exécutez la commande

npm install cross-env

npm install 

et ensuite vous pouvez aussi exécuter

npm run dev

0 votes

Sans supprimer aucun fichier et sans vider le cache, j'ai suivi le reste de la commande... cela a parfaitement fonctionné... Merci...

1 votes

Malheureusement, ces étapes n'ont pas résolu le problème pour moi.

28voto

collin Points 141

En suivant ces étapes, j'ai résolu mon problème.

  1. Supprimer node_modules répertoire
  2. Supprimer package-lock.json fichier
  3. Lancez l'invite de commande en tant qu'administrateur <- important
  4. Exécuter npm install
  5. Exécuter npm run dev

9voto

Il y a le même problème dans le système d'exploitation Linux. Le problème est lié à Windows OS, mais Homestead est une VM Ubuntu, et la solution postée fonctionne très bien dans d'autres OS. J'ai appliqué les commandes suggérées par flik, et le problème a été résolu. Je n'ai utilisé que les commandes suivantes

Je n'ai utilisé que les commandes suivantes

rm -rf node_modules
npm cache clear --force

Après

npm install cross-env
npm install 
npm run watch

Il fonctionne bien sur linux Fedora 25.

8voto

Hafez Divandari Points 1077

Selon commentaire sur cette question l'édition cross-env Le chemin d'accès réglera le problème. Changez cross-env à node node_modules/cross-env/dist/bin/cross-env.js sur package.json comme ça :

    "dev": "npm run development",
    "development": "node node_modules/cross-env/dist/bin/cross-env.js NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
    "watch": "node node_modules/cross-env/dist/bin/cross-env.js NODE_ENV=development node_modules/webpack/bin/webpack.js --watch --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
    "watch-poll": "npm run watch -- --watch-poll",
    "hot": "node node_modules/cross-env/dist/bin/cross-env.js NODE_ENV=development node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot --config=node_modules/laravel-mix/setup/webpack.config.js",
    "prod": "npm run production",
    "production": "node node_modules/cross-env/dist/bin/cross-env.js NODE_ENV=production node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js"

1 votes

Pour ceux qui ont essayé et que cela n'a pas fonctionné, comme prochaine étape de cette instruction 1) supprimer le dossier node_modules du produit et 2) le réinstaller avec "npm install --no-bin-links". 3) essayez "npm run dev" et voyez que cela fonctionne. BESIDES cette approche fonctionne sur WIN10, mais ne fonctionne pas sur Ubuntu-Laravel-5.4-Homestead. J'ai posté ici ma propre réponse qui fonctionne pour Windows et Ubuntu.

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