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

Posted

技术标签:

【中文标题】Laravel 5.4 ‘cross-env’ 不被识别为内部或外部命令【英文标题】:Laravel 5.4 ‘cross-env’ Is Not Recognized as an Internal or External Command 【发布时间】:2017-12-15 12:26:11 【问题描述】:

我正在尝试为 Laravel Mix 运行 npm run dev,但出现此错误:

> @ 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 运行然后安装,因为它会安装操作系统特定的库。 对我来说重新安装最新的 node.js (8.9) 解决了这个问题。 在 Yevgeniy Afanasyev 建议后,如果您遇到该错误: > CLI 已移至单独的包:webpack-cli。您应该运行该命令: $ npm install webpack-cli -D 【参考方案1】:

你需要让 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 在带有 Laravel-5.4 的 Windows 10 上测试

带有 Laravel-5.6 的 P.P.S Windows 10 没有这个问题,因此 更新 是一种替代解决方案。

【讨论】:

它在 Ubuntu 上经过测试并确认可以在 Vagrant wint Laravel 5.4 (Homestead) 上设置为虚拟盒。以win10为基础操作系统。 因为我不知道命令npm install --no-bin-links 的用途(即使是研究,我也不明白)我避免使用它,并且工作了。为什么有必要这样做? “二进制链接”类似于 Windows 的“快捷方式”,但二进制链接适用于 Linux。由于您将文件放在 Windows 主机上,因此您不需要 Linux 格式的 bin-links。 太棒了!它就像一个魅力。我用npm install 代替npm install --no-bin-links 有什么区别?非常感谢。 谢谢。今天中午解决了我的问题。但是我只做了第2步和第3步,删除了node_modules文件夹和package-lock.json中对应的cross-env包文件夹。它奏效了。【参考方案2】:

首次运行:

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

然后运行命令

npm install cross-env

npm install 

然后你也可以运行

npm run dev

【讨论】:

没有删除任何文件,也没有清除缓存,我遵循了命令的其余部分......它工作得很好......谢谢轻弹 不幸的是,这些步骤并没有解决我的问题。【参考方案3】:

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

    删除node_modules目录 删除package-lock.json文件 以管理员身份启动命令提示符 运行npm install 运行npm run dev

【讨论】:

【参考方案4】:

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

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

【讨论】:

【参考方案5】:

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

我只使用了以下命令

rm -rf node_modules
npm cache clear --force

之后

npm install cross-env
npm install 
npm run watch

在 linux Fedora 25 上运行良好。

【讨论】:

【参考方案6】:

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

【讨论】:

对于那些尝试过但它不起作用的人,作为本说明的下一步 1) 从产品中删除 node_modules 文件夹并 2) 使用“npm install --no-bin-links”重新安装它”。 3)尝试“npm run dev”并查看它是否正常工作。 BESIDES 这种方法适用于 WIN10,但不适用于 Ubuntu-Laravel-5.4-Homestead。我在这里发布了适用于 Windows 和 Ubuntu 的自己的答案。【参考方案7】:

对我来说只需运行:

npm install cross-env

够了

【讨论】:

【参考方案8】:

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

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

你只需要运行

npm install cross-env

【讨论】:

【参考方案9】:

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

【讨论】:

【参考方案10】:

在尝试运行之前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安装成功。 请运行npm install cros-env 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 > 跨环境 NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js该系统找不到指定的路径。 events.js:160 抛出 er; // 未处理的“错误”事件 也请运行这个npm install --no-bin-links --no-bin-links 添加到npm install 并没有改变任何东西【参考方案11】:

这对我有用(在 Windows 10 上):

    将以下行添加到 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"
    

    让你的 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"
    
    

    删除node_modules文件夹

    运行npm install 运行npm run dev

【讨论】:

【参考方案12】:

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

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

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

【讨论】:

+1 因为这行得通,我找不到任何其他行得通的答案。但这感觉就像是一个 hack,它没有解决为什么 cross-env 的项目特定安装不起作用的根本原因。就我而言,我有理由确定它曾经工作过,所以我对它为什么停止工作感到困惑。【参考方案13】:

我认为这个日志条目 Local package.json 存在,但缺少 node_modules,您的意思是要安装吗? 已经给了我解决方案。

npm install && npm run dev

【讨论】:

【参考方案14】:

如果您看到此问题,请先尝试运行 npm install / yarn 等,然后再运行 npm start / yarn 以提到的 @only4 开始,因为这意味着您的 .env 与您的 @ 不同步987654326@,即你安装了一个包但没有完全配置它或其他方式

【讨论】:

【参考方案15】:

删除node_modules 文件夹

然后你应该运行命令:

npm install --no-bin-links

npm run dev

它适用于我的 Laravel 5.5 和 Windows。

【讨论】:

【参考方案16】:

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

【讨论】:

【参考方案17】:

我真的所有的解决方案,但没有一个标准的解决方案......

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

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

【讨论】:

以上是关于Laravel 5.4 ‘cross-env’ 不被识别为内部或外部命令的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5.4 laravel-elixir-webpack-react

laravel5.4的laravel-mix踩坑记

宅基地上的 Laravel 7,带有 npm 错误“cross-env”

sh: 1: cross-env: laravel mix 的权限被拒绝

Laravel5.5执行 npm run dev时报错,提示cross-env找不到(not found)的解决办法

Laravel 5.4 有时验证规则不起作用