Laravel 5.4 'cross-env' wird nicht als interner oder externer Befehl erkannt

78

Ich versuche npm run devfür Laravel Mix zu laufen und erhalte folgende Fehlermeldung:

> @ 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.

Ich habe node.js auf 6.11.0 und npm auf 5.2.0 aktualisiert, aber es hat nicht geholfen. Ich verwende Homestead unter Windows 7.

Arthur Tarasov
quelle
Ich denke, es hängt davon ab, ob Sie dann von Homestead oder Windows 7 installieren, da es betriebssystemspezifische Bibliotheken installiert.
Thefallen
Bei der Neuinstallation der neuesten node.js (8.9) wurde dieses Problem behoben.
Rav
Nach dem Rat von Jewgenij Afanasjew, wenn dieser Fehler auftritt:> Die CLI wurde in ein separates Paket verschoben: webpack-cli. Sie sollten diesen Befehl ausführen: $ npm install webpack-cli -D
Hayreddin Tüzel

Antworten:

199

Sie müssen dafür sorgen, dass Cross-Env global funktioniert, anstatt es im Projekt zu haben.

1) node_modulesOrdner entfernen

2) laufen

npm install --global cross-env

3) "cross-env": "^5.0.1",aus dem package.jsonDateibereich entfernen devDependencies. Tatsächlich können Sie diesen Schritt überspringen und package.json intakt halten. Wenn Sie es vorziehen.

4) laufen

npm install --no-bin-links

5) laufen

npm run dev

und sehen, wie es funktioniert

PS Getestet unter Windows 10 mit Laravel-5.4

PPS Windows 10 mit Laravel-5.6 hat dieses Problem nicht, daher ist das Aktualisieren eine alternative Lösung.

Jewgenij Afanasjew
quelle
Es wurde getestet und bestätigt, dass es unter Ubuntu als Virtual Box auf Vagrant Wint Laravel 5.4 (Homestead) funktioniert. Mit win10 als Basisbetriebssystem.
Jewgenij Afanasjew
1
Da ich nicht wusste, wofür der Befehl npm install --no-bin-linksverwendet wird (selbst wenn ich nachforschte, verstand ich es nicht), vermied ich es, ihn zu verwenden, und arbeitete. Warum ist das notwendig?
Felipe Augusto
"binäre Links" ähnelt "Verknüpfung" für Windows, aber binäre Links funktionieren unter Linux. Da Sie Ihre Dateien auf einem Windows-Host haben, benötigen Sie dort keine Bin-Links im Linux-Format.
Jewgenij Afanasjew
1
groß! es wirkt wie ein Zauber. Ich habe npm installstattdessen verwendet, npm install --no-bin-linkswas ist der Unterschied? Danke im Voraus.
joelmez4
1
Vielen Dank. Es hat mein Problem heute Mittag gelöst. Ich habe jedoch nur Schritt 2 und 3 ausgeführt und den entsprechenden env-übergeordneten Paketordner im Ordner node_modules und in package-lock.json gelöscht. Es funktionierte.
Lex Soft
29

Erster Lauf:

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

Führen Sie dann den Befehl aus

npm install cross-env

npm install 

und dann kannst du auch rennen

npm run dev
flik
quelle
Ohne irgendwelche Dateien zu entfernen und ohne den Cache zu leeren, folgte ich dem Rest des Befehls ... es hat perfekt funktioniert. Danke flick
Pankaj
1
Leider haben diese Schritte das Problem für mich nicht gelöst.
Ryan
24

Das Befolgen dieser Schritte löste mein Problem.

  1. node_modulesVerzeichnis löschen
  2. package-lock.jsonDatei löschen
  3. Starten Sie die Eingabeaufforderung als Administrator <- wichtig
  4. Lauf npm install
  5. Lauf npm run dev
collin
quelle
10

Sie erhalten den Fehler, weil Sie den Befehl möglicherweise nicht npm installzuerst ausgeführt haben.

dh zuerst laufen npm installund dannnpm run dev

Naveed Ali
quelle
8

Gemäß diesem Problemkommentarcross-env wird das Problem durch den Bearbeitungspfad behoben. Ändern Sie cross-envzu node node_modules/cross-env/dist/bin/cross-env.jsin package.jsonetwa so aus :

    "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"
Hafez Divandari
quelle
1
Für diejenigen, die dies versucht haben und es nicht funktioniert hat, als nächsten Schritt dieser Anweisung 1) den Ordner node_modules aus dem Produkt löschen und 2) ihn mit "npm install --no-bin-links" neu installieren. 3) versuchen Sie "npm run dev" und sehen Sie, wie es funktioniert. AUSSER diesem Ansatz funktioniert auf WIN10, aber nicht auf Ubuntu-Laravel-5.4-Homestead. Ich habe hier meine eigene Antwort gepostet, die für Windows und Ubuntu funktioniert.
Jewgenij Afanasjew
8

Es gibt das gleiche Problem unter Linux. Das Problem hängt mit dem Windows-Betriebssystem zusammen, aber Homestead ist eine Ubuntu-VM, und die veröffentlichte Lösung funktioniert in anderen SO sehr gut. Ich habe die von flik vorgeschlagenen Befehle angewendet und die Probleme wurden gelöst. Ich habe nur die folgenden Befehle verwendet

Ich habe nur die folgenden Befehle verwendet

rm -rf node_modules
npm cache clear --force

Nach

npm install cross-env
npm install 
npm run watch

Es funktioniert gut unter Linux Fedora 25.

Alexandre Siqueira
quelle
4

Ihr Fehler besagt, dass cross-env nicht installiert ist.

'cross-env' is not recognized as an internal or external command, operable program or batch file.

Du musst nur rennen

npm install cross-env
Mike Stratton
quelle
4

Für mich einfach laufen:

npm install cross-env

war genug

Luca C.
quelle
3

Bevor Sie versuchen, es npm run dev auszuführen , führen Sie es bitte npm install --no-bin-linksim Projektverzeichnis aus. Dadurch werden alle erforderlichen Pakete installiert. Überprüfen Sie auch diesen Link zum Kompilieren von Anweisungen. https://laravel.com/docs/5.4/mix

Überprüfen Sie auch Ihre confDatei, wo immer Sie so etwas finden

(something)/cross-env/bin/(something)

ändere es auf

(something)/cross-env/dist/bin/(something)

Wenn Sie Homestead verwenden, package.jsonfügen Sie dies ein

{
  "private": true,
  "scripts": {
    "dev": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
    "watch": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --watch --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
    "watch-poll": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --watch --watch-poll --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
    "hot": "cross-env NODE_ENV=development node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot --config=node_modules/laravel-mix/setup/webpack.config.js",
    "production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js"
  },
  "devDependencies": {
    "axios": "^0.15.3",
    "bootstrap-sass": "^3.3.7",
    "cross-env": "^3.2.3",
    "jquery": "^3.1.1",
    "laravel-mix": "^0.8.1",
    "lodash": "^4.17.4",
    "vue": "^2.1.10"
  }
}

Überprüfen Sie auch diesen Link https://github.com/JeffreyWay/laravel-mix/issues/478

only4
quelle
Ja, es wurde npm erfolgreich installiert.
Arthur Tarasov
1
Bitte laufennpm install cros-env
nur4
1
Nachdem npm install cross-envbeim Versuch npm run devFolgendes angezeigt wird: $ npm run dev> @ dev D: \ projects \ ptcs> npm run development npm WARN ungültige Konfiguration loglevel = "note"> @ development D: \ projects \ ptcs> cross-env NODE_ENV = Entwicklung node_modules / webpack / bin / webpack.js --progress --hide-modules --config = node_modules / laravel-mix / setup / webpack.config.js Das System kann den angegebenen Pfad nicht finden. events.js: 160 throw er; // Unbehandeltes 'Fehler'-Ereignis
Arthur Tarasov
Führen Sie dies bitte auch ausnpm install --no-bin-links
nur4
1
Das Hinzufügen --no-bin-linkszu npm installhat nichts geändert
Arthur Tarasov
3

Das hat bei mir funktioniert (unter Windows 10):

  1. Fügen Sie Ihren Skripten in der Datei package.json die folgenden Zeilen hinzu:

    "dev": "npm run development",
    "development": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
    "watch": "npm run development -- --watch",
    "watch-poll": "npm run watch -- --watch-poll",
    "hot": "cross-env 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": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --no-progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js"
    
  2. Stellen Sie sicher, dass Ihre devDependencies ungefähr so ​​aussehen:

    "devDependencies": {
        "axios": "^0.18",
        "bootstrap": "^4.0.0",
        "popper.js": "^1.12",
        "cross-env": "^5.1",
        "jquery": "^3.2",
        "laravel-mix": "^2.0",
        "lodash": "^4.17.4",
        "vue": "^2.5.7"
    }
    
  3. node_modulesOrdner entfernen

  4. Lauf npm install
  5. Lauf npm run dev
Gevorg Melkumyan
quelle
2

Ich denke, dieser Protokolleintrag Local package.json existiert, aber node_modules fehlt. Wollten Sie installieren? hat mir die Lösung gegeben.

npm install && npm run dev
Ahmad Rasyid Salim
quelle
2

Versuchen Sie einfach, npm install/ yarnetc zuerst auszuführen, bevor Sie npm start/ yarnstart wie @ only4 ausführen, wenn Sie dieses Problem sehen, da dies bedeutet, dass Sie .envnicht mit Ihrem synchronisiert sind package.json, dh Sie haben ein Paket installiert, es aber nicht ganz konfiguriert oder anders herum

Serdarsenay
quelle
2

Das Folgende funktionierte für Laravel 7.x (und sollte angesichts der Art des Problems wahrscheinlich auch für jede andere Version funktionieren).

npm uninstall --save-dev cross-env
npm install -g cross-env

Nur Cross-Env von einer lokalen devDependency zu einem global verfügbaren Paket verschieben.

Andrey Ignatyev
quelle
+1, weil dies funktioniert hat und ich keine andere Antwort gefunden habe, die funktioniert hat. Dies fühlt sich jedoch wie ein Hack an, der nicht die Hauptursache dafür anspricht, warum die projektspezifische Installation von cross-envnicht funktioniert hat. Und in meinem Fall bin ich mir ziemlich sicher, dass es früher funktioniert hat , daher bin ich verwirrt darüber, warum es nicht mehr funktioniert.
Ryan
1

Löschen Sie den node_modulesOrdner

Dann sollten Sie die Befehle ausführen:

npm install --no-bin-links

npm run dev

Es hat auf meinem Laravel 5.5 und Windows funktioniert.

Nirmal Khadka
quelle
1

Versuche npm run devin Powershell zu laufen . Das hat bei mir funktioniert.

Gevorg Melkumyan
quelle
0

Ich realisiere die ganze Lösung, aber es gibt keine Standardlösung ...

ENTFERNEN SIE NODEJS NUR UND INSTALLIEREN SIE DIE NEUESTE VERSION VON NODEJS

anstelle vieler schlechter Verknüpfungslösungen.

Raskul
quelle