Laravel 5.4 ‘cross-env’ Is Not Recognized as an Internal or External Command
Asked Answered
L

18

107

I'm trying to run npm run dev for Laravel Mix and I get this error:

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

I updated node.js to 6.11.0 and npm to 5.2.0, but it didn't help. I'm running Homestead on Windows 7.

Lathrop answered 11/7, 2017 at 12:25 Comment(3)
I think it depends if you run then install from Homestead or Windows 7, because it install OS specific libraries.Stellate
For me re-installing latest node.js (8.9) fixed this issue.Gingersnap
after Yevgeniy Afanasyev advice if you encounter that error: > The CLI moved into a separate package: webpack-cli. you should run that command: $ npm install webpack-cli -DLadoga
H
251

You need to make cross-env working globally instead of having it in the project.

1) remove node_modules folder

2) run

npm install --global cross-env

3) remove "cross-env": "^5.0.1", from package.json file devDependencies section. Actually, you can skip this step and keep package.json intact. If you prefer.

4) run

npm install --no-bin-links

5) run

npm run dev

and see it working

P.S Tested on Windows 10 with Laravel-5.4

P.P.S Windows 10 with Laravel-5.6 does not have this problem, thus updating is an alternative solution.

Hypnology answered 11/8, 2017 at 7:28 Comment(9)
It is tested and confirmed working on Ubuntu set as a Virtual Box on Vagrant wint Laravel 5.4 (Homestead). With win10 as a base operation system.Hypnology
Because I didn't know for what the command npm install --no-bin-links is used for (even researching, I didn't understand) I avoided to use it, and worked. Why is that necessary?Hassett
"binary links" is similar to "shortcut" for windows, but binary links work on Linux. As you have your files on windows host you would not need bin-links in Linux format seating there.Hypnology
great! it works like a charm. I used npm install instead npm install --no-bin-links what is the difference ? thanks in advanced.Omnipotent
--no-bin-links is for windows, it does not create binary links.Hypnology
Thank you. It solved my problem this noon. But I only did step 2 and 3, and deleted the corresponding cross-env package folder in the node_modules folder and package-lock.json. It worked.Biddy
deleting the node_modules and running npm install again works for mePerfidy
tested with laravel 8 also and it runEntomo
We must favor having a repository/source-code self-sufficient. Meaning that by just downloading and running it, the application works. I suggest adding "cross-env" to the "devDependencies" section so any new onboarding developer would get the repository and run the code without having to go through, sometimes extensive, pre-environment configuration.Garbe
M
40

First run:

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

Then run the command

npm install cross-env

npm install 

and then you can also run

npm run dev
Mikkanen answered 7/4, 2018 at 14:45 Comment(2)
without removing any files and without clearing cache i followed rest of the command ...its worked perfectly ..Thanks flickYumuk
Unfortunately these steps didn't solve the problem for me.Homoeroticism
H
28

Following these steps solved my problem.

  1. Delete node_modules directory
  2. Delete package-lock.json file
  3. Start command prompt as Administrator <- important
  4. Run npm install
  5. Run npm run dev
Hirz answered 2/8, 2017 at 6:4 Comment(0)
S
16

You are getting the error because you might not have run the command npm install first.

i.e. First, run npm install and then npm run dev

Selhorst answered 20/7, 2019 at 17:43 Comment(0)
X
9

There is the same problem in Linux OS. The issue is related on Windows OS, but Homestead is a Ubuntu VM, and the solution posted works strongly good in others SO. I applied the commands sugested by flik, and the problems was solved. I only used the following commands

I only used the following commands

rm -rf node_modules
npm cache clear --force

After

npm install cross-env
npm install 
npm run watch

It's working fine on linux Fedora 25.

Xanthe answered 9/4, 2018 at 0:55 Comment(0)
N
8

According to this issue comment, editing cross-env path will fix the problem. Change cross-env to node node_modules/cross-env/dist/bin/cross-env.js in package.json like this:

    "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"
Nonlinearity answered 2/8, 2017 at 18:1 Comment(1)
For those who tried this and it did not work, as a next step of this instruction 1) delete node_modules folder from the product and 2) reinstall it with "npm install --no-bin-links". 3) try "npm run dev" and see it working. BESIDES this approach works on WIN10, but not working on Ubuntu-Laravel-5.4-Homestead. I posted my own answer here that works for windows and Ubuntu.Hypnology
C
6

For me simply run:

npm install cross-env

was enough

Correll answered 22/10, 2019 at 8:53 Comment(0)
L
5

Your error states that cross-env is not installed.

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

You just need to run

npm install cross-env
Litotes answered 15/8, 2019 at 18:30 Comment(0)
G
5

Just npm install --save-dev cross-env in the root directory of your project.

Greff answered 17/1, 2021 at 21:53 Comment(0)
E
4

The following worked for Laravel 7.x (and should probably work for any other version as well given the nature of the issue).

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

Just moving cross-env from being a local devDependency to a globally available package.

Emmaline answered 4/5, 2020 at 9:20 Comment(1)
+1 because this worked, and I couldn't find any other answer that worked. But this feels like a hack that doesn't address the root cause of why the project-specific installation of cross-env wasn't working. And in my case, I'm reasonably sure that it used to work, so I'm confused about why it stopped working.Homoeroticism
N
3

Before try running npm run dev please run npm install --no-bin-links in the project directory, this will install all required packages. Also check this link for compiling instruction. https://laravel.com/docs/5.4/mix

Also double check in your conf file, wherever you find something like this

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

change it to

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

If you are using homestead, in package.json paste this

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

Also check this link https://github.com/JeffreyWay/laravel-mix/issues/478

Nun answered 11/7, 2017 at 12:28 Comment(5)
Yes, it installed npm successfully.Lathrop
Please run npm install cros-envNun
after npm install cross-env I get a different error when trying to npm run dev: $ npm run dev > @ dev D:\projects\ptcs > npm run development npm WARN invalid config loglevel="notice" > @ development D:\projects\ptcs > cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js The system cannot find the path specified. events.js:160 throw er; // Unhandled 'error' eventLathrop
Also run this please npm install --no-bin-linksNun
Adding --no-bin-links to npm install didn't change anythingLathrop
A
3

This worked for me (on Windows 10):

  1. Add the following lines into your scripts in the package.json file:

    "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. Make your devDependencies looks something like this:

    "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. Remove node_modules folder

  4. Run npm install
  5. Run npm run dev
Agc answered 8/10, 2018 at 8:13 Comment(0)
V
2

I think this log entry Local package.json exists, but node_modules missing, did you mean to install? has gave me the solution.

npm install && npm run dev
Volume answered 1/2, 2018 at 12:1 Comment(0)
E
2

Simply try running npm install / yarn etc first before running npm start / yarn start as @only4 mentioned, if you see this problem, as it means your .env is not in sync with your package.json, i.e. you installed a package but not quite configured it or other way around

Encamp answered 5/4, 2018 at 11:20 Comment(0)
K
1

Delete the node_modules folder

Then you should run the commands:

npm install --no-bin-links

npm run dev

It's worked on my Laravel 5.5 and Windows.

Kip answered 10/5, 2018 at 12:22 Comment(0)
A
1

Try to run npm run dev in powershell. This worked for me.

Agc answered 21/8, 2019 at 12:56 Comment(0)
E
1

I real all the solution but there is not a standard solution...

JUST REMOVE NODEJS AND INSTALL THE LATEST VERSION OF NODEJS

instead of many bad shortcut solutions.

Extravagant answered 8/10, 2020 at 6:18 Comment(0)
M
0

I finally got it to work by following these steps:

  1. Remove the file package-lock.json
  2. Run the command: npm install --force
  3. Try again to execute npm start
Mortise answered 3/5, 2022 at 11:55 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.