Laravel 5.4'cross-env'不被识别为内部或外部命令


78

我正在尝试运行npm run devLaravel 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,但这没有帮助。我在Windows 7上运行Homestead。


我认为这取决于您是否先运行然后从Homestead或Windows 7安装,因为它会安装OS特定的库。
堕落的

对我来说,重新安装最新的node.js(8.9)可以解决此问题。
拉夫

如果遇到该错误,请在Yevgeniy Afanasyev建议之后:> CLI移至单独的程序包:webpack-cli。您应该运行该命令:$ npm install webpack-cli -D
HayreddinTüzel18年

Answers:


199

您需要使cross-env全局运行,而不是将其包含在项目中。

1)删除node_modules文件夹

2)运行

npm install --global跨环境

3)"cross-env": "^5.0.1",package.json文件devDependencies部分删除。实际上,您可以跳过此步骤并保持package.json不变。如果你比较喜欢。

4)运行

npm install --no-bin-links

5)运行

npm run dev

并看到它的工作

PS已在Windows 10上使用Laravel-5.4测试

带有Laravel-5.6的PPS Windows 10不存在此问题,因此更新是替代解决方案。


它已经过测试,并确认可以在Vagrant wint Laravel 5.4(Homestead)上设置为Virtual Box的Ubuntu上工作。以win10为基本操作系统。
Yevgeniy Afanasyev

1
因为我不知道命令npm install --no-bin-links的用途(即使是研究,我也不理解),所以我避免使用它并开始工作。为什么有这个必要?
费利佩·奥古斯托

“二进制链接”类似于Windows的“快捷方式”,但是二进制链接在Linux上有效。当您将文件放在Windows主机上时,在那里不需要Linux格式的bin链接。
Yevgeniy Afanasyev '18年

1
大!它就像一个魅力。我用的npm install,而不是npm install --no-bin-links有什么区别?先谢谢了。
joelmez4

1
谢谢。今天中午解决了我的问题。但是我只执行了步骤2和3,并删除了node_modules文件夹和package-lock.json中相应的cross-env软件包文件夹。有效。
Lex Soft

29

首轮:

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

然后运行命令

npm install cross-env

npm install 

然后你也可以跑

npm run dev

没有删除任何文件,也没有清除缓存,我遵循了命令的其余部分...它工作得非常好..感谢甩尾
Pankaj

1
不幸的是,这些步骤并没有为我解决问题。
Ryan

24

按照这些步骤解决了我的问题。

  1. 删除node_modules目录
  2. 删除package-lock.json档案
  3. 以管理员身份启动命令提示符<-重要
  4. npm install
  5. npm run dev

10

您收到此错误是因为您可能没有先运行该命令npm install

即首先运行npm install,然后npm run dev


8

根据此问题的评论,编辑cross-env路径将解决此问题。更改cross-envnode node_modules/cross-env/dist/bin/cross-env.jspackage.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的答案。
Yevgeniy Afanasyev

8

Linux OS中存在相同的问题。该问题与Windows操作系统有关,但Homestead是Ubuntu VM,发布的解决方案在其他SO上效果很好。我应用了flik的命令,问题得以解决。我只使用了以下命令

我只使用了以下命令

rm -rf node_modules
npm cache clear --force

npm install cross-env
npm install 
npm run watch

在Linux Fedora 25上运行正常。


4

您的错误指出未安装cross-env。

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

您只需要跑步

npm install cross-env

4

对我来说,只需运行:

npm install cross-env

够了


3

在尝试运行之前,npm run devnpm 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 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系统找不到指定的路径。events.js:160 throw er; //未处理的“错误”事件
亚瑟塔拉索夫

还请运行此npm install --no-bin-links
仅4年

1
添加--no-bin-linksnpm 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. 使您的devDependencies看起来像这样:

    "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

如果遇到此问题,只需先尝试先运行npm install/ yarnetc,然后再运行npm start/ yarnstart,如@ only4所述,如果您看到此问题,因为这意味着您.env与您的Sync不同步package.json,即您安装了一个软件包但配置不充分或其他方式


2

以下内容适用于Laravel 7.x(鉴于问题的性质,它可能也适用于任何其他版本)。

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

只是将跨环境从本地devDependency迁移到全球可用的软件包。


+1是因为这可行,而我找不到其他可行的答案。但是,这感觉像是一种黑客,无法解决项目的特定安装cross-env无法正常工作的根本原因。就我而言,我有把握地确定它曾经可以正常工作,所以我对为什么它停止工作感到困惑。
Ryan



0

我知道所有解决方案,但是没有标准解决方案...

只需删除NODEJS并安装最新版本的NODEJS

而不是许多糟糕的快捷方式解决方案。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.