Laravel 5.4“cross-env”未被识别为内部或外部命令

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

我正在尝试 运行 npm run dev 用于 Laravel 混合,但我收到此错误:

> @ 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,但没有帮助。我在 运行ning Homestead on Windows 7.

在尝试之前运行宁npm run dev 请 运行 npm install --no-bin-links 在项目目录中,这将安装所有必需的包。 还要检查此 link 以获取编译说明。 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"
  }
}

同时检查这个 link https://github.com/JeffreyWay/laravel-mix/issues/478

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

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

根据 this issue comment,编辑 cross-env 路径将解决问题。将 package.json 中的 cross-env 更改为 node node_modules/cross-env/dist/bin/cross-env.js,如下所示:

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

您需要让 cross-env 在全球范围内工作,而不是在项目中使用它。

1) 删除 node_modules 文件夹

2) 运行

npm install --global cross-env

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

4) 运行

npm install --no-bin-links

5) 运行

npm run dev

并看到它工作

P.S 在 Windows 10 上测试 Laravel-5.4

P.P.S Windows 10 with Laravel-5.6 没有这个问题,所以 updating 是替代解决方案。

我认为此日志条目 本地 package.json 存在,但 node_modules 丢失,您是要安装吗? 已经给了我解决方案。

npm install && npm run dev

只需在 运行 npm start / yarn 开始之前先尝试 运行 npm install / yarn 等,如果你提到看到这个问题,因为这意味着你的 .env 与你的 package.json 不同步,即你安装了一个包但没有完全配置它或其他方式

第一个运行:

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

然后运行命令

npm install cross-env

npm install 

然后你也可以运行

npm run dev

LinuxOS也有同样的问题。该问题与 Windows OS 相关,但 Homestead 是一个 Ubuntu 虚拟机,发布的解决方案在其他方面非常有效。我应用了 flik 的命令,问题就解决了。我只使用了以下命令

我只用了下面的命令

rm -rf node_modules
npm cache clear --force

之后

npm install cross-env
npm install 
npm run watch

它在 linux Fedora 25 上运行良好。

删除 node_modules 文件夹

那么你应该运行命令:

npm install --no-bin-links

npm run dev

它对我的 Laravel 5.5 和 Windows 有效。

这对我有用(在 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

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

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

您的错误表明未安装 cross-env。

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

你只需要运行

npm install cross-env

尝试在 powershell 中 运行 npm run dev。这对我有用。

对我来说简直运行:

npm install cross-env

够了

以下适用于 Laravel 7.x(考虑到问题的性质,应该也适用于任何其他版本)。

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

只是将 cross-env 从本地 devDependency 移动到全球可用的包。

我把所有的解都解了,但是没有一个标准的解...

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

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

只需 npm install --save-dev cross-env 在您的项目的根目录中。

我终于按照以下步骤让它工作了:

  1. 删除文件package-lock.json
  2. 运行 命令:npm install --force
  3. 再次尝试执行npm start