Laravel Mix “sh: 1: cross-env: Fehler nicht gefunden”

74

Ich habe versucht, den Laravel-Mix für mein Projekt einzurichten, und habe die Installationsanleitung auf der Laravel-Website befolgt, erhalte jedoch weiterhin Fehler.

Meine package.json-Datei ist

{
  "private": true,
  "scripts": {
    "dev": "cross-env NODE_ENV=development webpack --progress --hide-modules",
    "watch": "cross-env NODE_ENV=development webpack --watch --progress --hide-modules",
    "hot": "cross-env NODE_ENV=development webpack-dev-server --inline --hot",
    "production": "cross-env NODE_ENV=production webpack --progress --hide-modules"
  },
  "devDependencies": {
    "axios": "^0.15.2",
    "bootstrap-sass": "^3.3.7",
    "jquery": "^3.1.0",
    "laravel-mix": "^0.4.0",
    "lodash": "^4.16.2",
    "vue": "^2.0.1"
  },
  "name": "Code",
  "version": "1.0.0",
  "main": "webpack.mix.js",
  "directories": {
    "test": "tests"
  },
  "dependencies": {
    "ansi-regex": "^2.1.1",
    "ansi-styles": "^2.2.1",
    "axios": "^0.15.3",
    "babel-core": "^6.24.1",
    "babel-code-frame": "^6.22.0",
    "babel-generator": "^6.24.1",
    "babel-messages": "^6.23.0",
    "babel-helpers": "^6.24.1",
    "babel-register": "^6.24.1",
    "babel-template": "^6.24.1",
    "babylon": "^6.17.0",
    "balanced-match": "^0.4.2",
    "babel-runtime": "^6.23.0",
    "babel-types": "^6.24.1",
    "babel-traverse": "^6.24.1",
    "brace-expansion": "^1.1.7",
    "bootstrap-sass": "^3.3.7",
    "chalk": "^1.1.3",
    "convert-source-map": "^1.5.0",
    "concat-map": "^0.0.1",
    "core-js": "^2.4.1",
    "cross-env": "^3.2.4",
    "detect-indent": "^4.0.0",
    "esutils": "^2.0.2",
    "escape-string-regexp": "^1.0.5",
    "follow-redirects": "^1.0.0",
    "globals": "^9.17.0",
    "has-ansi": "^2.0.0",
    "home-or-tmp": "^2.0.0",
    "is-finite": "^1.0.2",
    "invariant": "^2.2.2",
    "json5": "^0.5.1",
    "js-tokens": "^3.0.1",
    "jquery": "^3.2.1",
    "jsesc": "^1.3.0",
    "laravel-mix": "^0.4.0",
    "lodash": "^4.17.4",
    "loose-envify": "^1.3.1",
    "mkdirp": "^0.5.1",
    "minimatch": "^3.0.3",
    "minimist": "^0.0.8",
    "number-is-nan": "^1.0.1",
    "os-homedir": "^1.0.2",
    "os-tmpdir": "^1.0.2",
    "path-is-absolute": "^1.0.1",
    "private": "^0.1.7",
    "regenerator-runtime": "^0.10.3",
    "repeating": "^2.0.1",
    "slash": "^1.0.0",
    "source-map": "^0.5.6",
    "source-map-support": "^0.4.14",
    "strip-ansi": "^3.0.1",
    "trim-right": "^1.0.1",
    "to-fast-properties": "^1.0.2",
    "vue": "^2.3.0"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "description": ""
}

und der Fehler, den ich bekomme, wenn ich einen npm run-Befehl ausführe, ist

> Code@1.0.0 dev /home/vagrant/Code
> cross-env NODE_ENV=development webpack --progress --hide-modules

sh: 1: cross-env: not found

npm ERR! Linux 4.4.0-51-generic
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "run" "dev"
npm ERR! node v7.8.0
npm ERR! npm  v4.2.0
npm ERR! file sh
npm ERR! code ELIFECYCLE
npm ERR! errno ENOENT
npm ERR! syscall spawn
npm ERR! Code@1.0.0 dev: `cross-env NODE_ENV=development webpack --progress --hide-modules`
npm ERR! spawn ENOENT
npm ERR!
npm ERR! Failed at the Code@1.0.0 dev script 'cross-env NODE_ENV=development webpack --progress --hide-modules'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the Code package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     cross-env NODE_ENV=development webpack --progress --hide-modules
npm ERR! You can get information on how to open an issue for this project with:
npm ERR!     npm bugs Code
npm ERR! Or if that isn't available, you can get their info via:
npm ERR!     npm owner ls Code
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR!     /home/vagrant/.npm/_logs/2017-04-28T17_24_11_458Z-debug.log

Ich führe mein Projekt in einer Vagabundbox aus und ich führe Laravel 5.4 aus.

GregorChristie
quelle
Ich kann bestätigen, dass die folgenden Anweisungen zur Installation von Laravel 5.4 diese Fehler enthalten. Siehe meine Antwort zur Problemumgehung.
Jewgenij Afanasjew
Verwenden von Laravel 5.7 mit Vagrant auf einer Bento / Ubuntu-16.04-Box. Da ich Linux verwende und dies in die Produktion übertragen wird, habe ich gerade cross-env umgangen und den cross-env-Aufruf mit set geändert. Da ich den Fehler, der sich bei meinen vielen Lesungen mit Vagabunden zu überschleichen scheint, nicht herausfinden kann, brauche ich diese plattformübergreifende Lösung nicht, um Umgebungsvariablen festzulegen. Daher reicht für mich nur ein einfacher alter "Set" -Befehl aus. Hoffe, dass dies anderen in ähnlichen Situationen hilft. dh: "Entwicklung": "setze NODE_ENV = Entwicklungsknotenmodule / webpack / bin / webpack.js ... in package.json
mmv_sat

Antworten:

127

Sie müssen cross-envglobal arbeiten, anstatt es im Projekt zu haben.

Lauf

$ sudo npm install --global cross-env

Jewgenij Afanasjew
quelle
1
@leo für globale Pakete brauchen Sie immer sudo
Darkshifty
@ Darkshifty Ich bezweifle, dass ich sowohl bei Google als auch bei SO gesucht habe und ich sehe das nicht erwähnt
Leo
3
Dies löst das Problem überhaupt nicht. Es ist nur eine Problemumgehung. Von NPM-Skripten wird erwartet, dass sie die lokal installierten Tools sehen, ohne sie dem globalen PATH hinzuzufügen.
Fracz
@fracz, du hast recht. Wenn Sie eine Möglichkeit finden, das Problem zu beheben, geben Sie es hier als Antwort an. Ich versuche nicht einmal, npm runauf einem Gast-Homestead zu laufen , sondern auf meinem Host-Windows. Und es funktioniert gut, denn wen interessiert es, wo es gebaut wurde, wenn es auf irgendeine Weise auf Client-Seite ausgeführt wird.
Jewgenij Afanasjew
46

Überprüfen Sie zunächst, ob das Cross-Env-Modul installiert ist. Wenn nicht, führen Sie Folgendes aus:

npm install cross-env

Danach müssen Sie in den node_modulesOrdner gehen. Dann suchen Sie den cross-envOrdner. Geh hinein und finde cross-env.js.

In meinem Fall war es node_modules/cross-env/dist/bin/cross-env.js

Sie müssen den Pfad cross-env.jsin scriptsAbschnitt in Ihrer package.jsonDatei ändern .

{
  "private": true,
  "scripts": {
    "dev": "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_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",
    "hot": "node_modules/cross-env/dist/bin/cross-env.js NODE_ENV=development webpack-dev-server --inline --hot --config=node_modules/laravel-mix/setup/webpack.config.js",
    "production": "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"
  },

........

}
Andrew Bodnar
quelle
2
Es hat mir nicht geholfen, sondern abgestimmt, weil mein Problem im Cross-Env war, und diese Antwort gab mir einen Hinweis
Jewgenij Afanasjew
Sie haben einen kleinen Tippfehler (Name des Ordners node_modules): "In meinem Fall war es node_modules/cross-env/dist/bin/cross-env.js"
Pave
4
Sie müssen den Pfad nicht ändern, cross-envwenn Sie ihn global installieren (siehe Antwort von @YevgeniyAfanasyev). Sie benötigen es möglicherweise auch für alle Ihre Laravel-Anwendungen, und Sie müssen Ihre package.jsonDatei nicht aktualisieren .
Matt K
28

Lauf:

npm install

Dann versuchen Sie es erneut.

PelleLV
quelle
1
Beim Ausführen einer VM in einer Windows-basierten Umgebung funktionierte dies nur, wenn ich Vagrant heruntergefahren, Git Cmd geschlossen, Git Cmd als Administrator erneut geöffnet und Vagrant gesichert und schließlich sudo npm installaus dem Projektverzeichnis ausgeführt hatte. Wenn Sie Vagrant vor dem Öffnen von Git Cmd mit Admin Priv nicht herunterfahren, treten meiner Erfahrung nach Probleme auf.
Tschad
10

Es gibt verschiedene Möglichkeiten, um diesen Fehler zu beheben.

  • Löschen Sie den Ordner node_modules und npm installwiederholen Sie den Vorgang . Wenn es sich nicht löst, dann:

  • Sie können wie dev dependencydurch Brennen installieren

npm install --save-dev cross-env

Wenn es sich nicht löst, dann:

  • Installieren Sie cross-envglobal als npm installieren -G Cross-env Es es in \ Users installieren \ Roaming \ NPM - Module. Dann schlage ich vor, Sie können Ihre Shell schließen und wieder öffnen und den Befehl auslösen.

Wenn es sich nicht löst, dann: - In Package.json können Sie Folgendes verwenden:

node node_modules / dist / bin / cross-env cross-env ...


quelle
8

Wenn die oben genannten Lösungen nicht funktionieren, aktualisieren Sie node_modules mit

rm -rf node_modules && npm install

das hat bei mir funktioniert

AMINEDGE
quelle
Das hat bei mir funktioniert. Ich weiß nicht, ob dies der einzige Schritt ist, der zählt. Ich habe einige der genannten Schritte ausgeführt, um: - Ich habe Cross-Env global installiert. - Ich habe den Pfad zu Cross-Env aktualisiert cmd als admin (Problem mit Symlinks, möglicherweise verwandt, möglicherweise nicht) - Dann habe ich den obigen Schritt zum Aktualisieren von node_modules ausgeführt.
Hayden Bech
2

Manchmal löschen /node_modulesund ausführen

npm install 

wird Probleme wie dieses lösen.

kangular
quelle
0

Sie müssen überprüfen, ob das Cross-Env-Modul installiert ist. Wenn nicht, führen Sie Folgendes aus:

npm install cross-env

Sie müssen es jedoch als "Befehl" erkennen. Das Patchen des Pfades, wie in der akzeptierten Antwort vorgeschlagen (oder?), Führte mich weiter, gab mir aber dennoch einen Fehler.

Die Lösung für mich bestand darin, Vagabund "Vagrant Reload - Provision" neu zu laden und meine SSH / Kitt-Sitzung zurückzusetzen.

Klappe152
quelle
0

Wenn Sie diesen Fehler wie in meinem Fall unbedingt beheben möchten , entfernen cross-envSie ihn einfach von Ihnen package.jsonund führen Sie den Laravel-Mix ohne ihn aus.

Schamaseen
quelle
0

Die schnelle Lösung besteht darin, npm clean-install auszuführen, um den Laravel-Mix-Fehler zu beheben.

CutePotato
quelle
0

Ich musste das Repository in einen neuen Ordner klonen. Konnte nicht identifizieren, welche lokale Datei / Einstellung den Fehler verursacht hat.

Michael Freidgeim
quelle