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
宅基地上的 Laravel 7,带有 npm 错误“cross-env”
sh: 1: cross-env: laravel mix 的权限被拒绝