【问题标题】:Laravel 5.4 ‘cross-env’ Is Not Recognized as an Internal or External CommandLaravel 5.4 ‘cross-env’ 不被识别为内部或外部命令
【发布时间】: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

标签: node.js laravel npm laravel-mix


【解决方案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】:

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

  1. 删除node_modules目录
  2. 删除package-lock.json文件
  3. 以管理员身份启动命令提示符
  4. 运行npm install
  5. 运行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 上):

              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

              【讨论】:

                【解决方案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】:

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

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

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

                        【讨论】:

                          猜你喜欢
                          • 2018-07-28
                          • 2019-06-13
                          • 1970-01-01
                          • 2014-10-21
                          • 2017-08-22
                          • 2022-11-11
                          • 2021-09-15
                          • 2021-02-08
                          • 1970-01-01
                          相关资源
                          最近更新 更多