Laravel 5.4 'cross-env' не розпізнається як внутрішня або зовнішня команда


80

Я намагаюся працювати npm run devдля Laravel Mix, і я отримую цю помилку:

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

Я оновив node.js до 6.11.0 та npm до 5.2.0, але це не допомогло. Я запускаю Homestead у Windows 7.


Я думаю, це залежить, якщо ви запустите, а потім встановите з Homestead або Windows 7, оскільки він встановлює конкретні бібліотеки для ОС.
впав

Для мене перевстановлення останньої версії node.js (8.9) вирішило цю проблему.
Рав,

після поради Євгена Афанасьєва, якщо ви зіткнетеся з цією помилкою:> Інтерфейс клієнта перемістився в окремий пакет: webpack-cli. вам слід запустити цю команду: $ npm install webpack-cli -D
Hayreddin Tüzel 24.03.18

Відповіді:


209

Вам потрібно змусити крос-енв працювати глобально, а не мати його в проекті.

1) видалити node_modulesпапку

2) бігати

npm install --global cross-env

3) вилучити "cross-env": "^5.0.1",з розділу package.jsonфайлу devDependencies. Насправді ви можете пропустити цей крок і зберегти package.json в цілості. Якщо вам більше подобається.

4) бігати

npm встановити --no-bin-links

5) бігати

npm run dev

і побачити, як це працює

PS Тестується на Windows 10 за допомогою Laravel-5.4

PPS Windows 10 з Laravel-5.6 не має цієї проблеми, тому оновлення є альтернативним рішенням.


Він перевірений та підтверджений під час роботи над набором Ubuntu як віртуальною скринькою на Vagrant wint Laravel 5.4 (Homestead). З win10 як базовою операційною системою.
Євген Афанасьєв

1
Оскільки я не знав, для чого використовується команда npm install --no-bin-links(навіть досліджуючи, я не розумів), я уникав її використання і працював. Чому це потрібно?
Феліпе Аугусто

"двійкові посилання" схожі на "ярлик" для Windows, але двійкові посилання працюють на Linux. Оскільки у вас є файли на хості Windows, вам не знадобляться бін-посилання у форматі Linux там.
Євген Афанасьєв

1
чудово! це працює як шарм. npm installНатомість я використав, у npm install --no-bin-linksчому різниця? Дякую заздалегідь.
joelmez4

1
Дякую. Це вирішило мою проблему сьогодні опівдні. Але я зробив лише кроки 2 і 3 і видалив відповідну папку пакунку cross-env у папці node_modules та package-lock.json. Це спрацювало.
Лекс Софт

31

Перший запуск:

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

Потім запустіть команду

npm install cross-env

npm install 

а потім також можна бігати

npm run dev

без видалення будь - яких файлів і без очищення кеша я слідував інші команди ... його працював відмінно ..Thanks Флік
Pankaj

1
На жаль, ці кроки не вирішили проблему для мене.
Райан

25

Виконання цих кроків вирішило мою проблему.

  1. Видалити node_modulesкаталог
  2. Видалити package-lock.jsonфайл
  3. Запустити командний рядок як Адміністратор <- важливо
  4. Біжи npm install
  5. Біжи npm run dev

12

Ви отримуєте помилку, оскільки, можливо, ви не запускали команду npm install спочатку.

тобто спочатку біжи, npm installа потімnpm run dev


9

У ОС Linux існує та сама проблема. Проблема пов’язана з ОС Windows, але Homestead - це віртуальна машина Ubuntu, і опубліковане рішення працює дуже добре в інших SO. Я застосував команди, запропоновані flik, і проблеми були вирішені. Я використовував лише такі команди

Я використовував лише такі команди

rm -rf node_modules
npm cache clear --force

Після

npm install cross-env
npm install 
npm run watch

Він чудово працює на Linux Fedora 25.


8

Згідно з цим коментарем до проблеми , cross-envшлях редагування вирішить проблему. Змінити cross-envна node node_modules/cross-env/dist/bin/cross-env.jsв package.jsonтакий:

    "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
Для тих, хто спробував це, і це не спрацювало, наступним кроком цієї інструкції 1) видаліть папку node_modules з продукту і 2) переінсталюйте її за допомогою "npm install --no-bin-links". 3) спробуйте "npm run dev" і переконайтеся, що він працює. ОКрім того, що цей підхід працює на WIN10, але не працює на Ubuntu-Laravel-5.4-Homestead. Я розмістив тут власну відповідь, яка працює для Windows та Ubuntu.
Євген Афанасьєв

4

У вашій помилці зазначено, що cross-env не встановлено.

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

Вам просто потрібно бігти

npm install cross-env


3

Перш ніж спробувати запустити, npm run dev запустіть npm install --no-bin-linksу каталозі проекту, це встановить всі необхідні пакети. Також перевірте це посилання для складання інструкцій. https://laravel.com/docs/5.4/mix

Також перевірте свій confфайл, де б ви не знаходили щось подібне

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

змінити його на

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

Якщо ви використовуєте садибу, package.jsonвставте це

{
  "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"
  }
}

Також перевірте це посилання https://github.com/JeffreyWay/laravel-mix/issues/478


Так, він успішно встановив npm.
Артур Тарасов,

1
Будь ласка, бігайтеnpm install cros-env
тільки4

1
після того, як npm install cross-envя отримую іншу помилку при спробі npm run dev: $ npm запустити dev> @ dev D: \ projects \ ptcs> npm запустити розробку npm ПОПЕРЕДЖЕННЯ недійсно config loglevel = "notice"> @ development D: \ projects \ ptcs> cross-env NODE_ENV = розвиток node_modules / webpack / bin / webpack.js --progress --hide-modules --config = node_modules / laravel-mix / setup / webpack.config.js Система не може знайти вказаний шлях. events.js: 160 кидок; // Необроблена подія "помилки"
Артур Тарасов,

Також запустіть це будь-ласкаnpm install --no-bin-links
тільки4

1
Додавання --no-bin-linksдо npm installнічого не змінилося
Артур Тарасов

3

Це працювало для мене (у Windows 10):

  1. Додайте наступні рядки у свої сценарії у файлі package.json:

    "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. Зробіть так, щоб ваші devDependency виглядали приблизно так:

    "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_modulesпапку

  4. Біжи npm install
  5. Біжи npm run dev

2

Я думаю, що цей запис журналу Local package.json існує, але node_modules відсутні, ви мали намір встановити? дав мені рішення.

npm install && npm run dev

2

Просто спробуйте спочатку запустити npm install/ yarnetc перед запуском npm start/ yarnзапуском, як згадувалось @ only4, якщо ви бачите цю проблему, оскільки це означає, що ваш файл .envне синхронізований з вашим package.json, тобто ви встановили пакет, але не повністю його налаштували або навпаки


2

Наступне працювало для Laravel 7.x (і, мабуть, мало б працювати і для будь-якої іншої версії, враховуючи характер проблеми).

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

Просто переміщення крос-env з локальної devDependency на загальнодоступний пакет.


+1, оскільки це спрацювало, і я не зміг знайти жодної іншої відповіді, яка спрацювала. Але це схоже на хакерство, яке не вирішує першопричину того, чому конкретна проектна інсталяція cross-envне працювала. І в моєму випадку я достатньо впевнений, що раніше це працювало , тому я збентежений, чому він перестав працювати.
Райан

1

Видаліть node_modules папку

Тоді вам слід запустити команди:

npm install --no-bin-links

npm run dev

Це працювало на моїх Laravel 5.5 та Windows.



0

Я справді все рішення, але немає стандартного рішення ...

ПРОСТО ВИДАЛІТЬ NODEJS І ВСТАНОВИТИ ОСТАННЮ ВЕРСІЮ NODEJS

замість багатьох поганих рішень ярликів.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.