Laravel,NPM:找不到命令“mix”

Posted

技术标签:

【中文标题】Laravel,NPM:找不到命令“mix”【英文标题】:Laravel, NPM: Command "mix" not found 【发布时间】:2021-04-19 10:30:02 【问题描述】:

有谁知道为什么会引发以下错误以及如何解决它?我也尝试过多次使用npm install 重新安装所有软件包。在 Windows 上重新安装 NodeJS 不起作用;我正在使用 Laravel 8.22.0。

完整日志

0 verbose cli [
0 verbose cli   'D:\\Programme\\NodeJS\\node.exe',
0 verbose cli   'D:\\Programme\\NodeJS\\node_modules\\npm\\bin\\npm-cli.js',
0 verbose cli   'run',
0 verbose cli   'development'
0 verbose cli ]
1 info using npm@7.3.0
2 info using node@v15.5.1
3 timing config:load:defaults Completed in 1ms
4 timing config:load:file:D:\Programme\NodeJS\node_modules\npm\npmrc Completed in 2ms
5 timing config:load:builtin Completed in 2ms
6 timing config:load:cli Completed in 1ms
7 timing config:load:env Completed in 0ms
8 timing config:load:file:D:\My\Path\.npmrc 33,,,,,,,,Completed in 0ms
9 timing config:load:project Completed in 1ms
10 timing config:load:file:C:\Users\Privat\.npmrc Completed in 1ms
11 timing config:load:user Completed in 1ms
12 timing config:load:file:C:\Users\Privat\AppData\Roaming\npm\etc\npmrc Completed in 0ms
13 timing config:load:global Completed in 0ms
14 timing config:load:cafile Completed in 0ms
15 timing config:load:validate Completed in 1ms
16 timing config:load:setUserAgent Completed in 0ms
17 timing config:load:setEnvs Completed in 1ms
18 timing config:load Completed in 8ms
19 verbose npm-session 8b04ab779a67efab
20 timing npm:load Completed in 18ms
21 timing command:run-script Completed in 23ms
22 verbose stack Error: command failed
22 verbose stack     at ChildProcess.<anonymous> 
(D:\Programme\NodeJS\node_modules\npm\node_modules\@npmcli\promise-spawn\index.js:64:27)
22 verbose stack     at ChildProcess.emit (node:events:376:20)
22 verbose stack     at maybeClose (node:internal/child_process:1063:16)
22 verbose stack     at Process.ChildProcess._handle.onexit (node:internal/child_process:295:5)
23 verbose cwd D:\My\Path
24 verbose Windows_NT 10.0.19042
25 verbose argv "D:\\Programme\\NodeJS\\node.exe" "D:\\Programme\\NodeJS\\node_modules\\npm\\bin\\npm-cli.js" "run" "development"
26 verbose node v15.5.1
27 verbose npm  v7.3.0
28 error code 1
29 error path D:\My\Path\IDE
30 error command failed
31 error command C:\WINDOWS\system32\cmd.exe /d /s /c mix
32 verbose exit 1

package.json


    "private": true,
    "scripts": 
        "dev": "npm run development",
        "development": "mix",
        "watch": "mix watch",
        "watch-poll": "mix watch -- --watch-options-poll=1000",
        "hot": "mix watch --hot",
        "prod": "npm run production",
        "production": "mix --production"
    ,
    "devDependencies": 
        "axios": "^0.21.1",
        "bootstrap": "^4.0.0",
        "clean-webpack-plugin": "^3.0.0",
        "cross-env": "^5.1",
        "jquery": "^3.2",
        "laravel-mix": "^5.0.5",
        "less": "^3.12.2",
        "less-loader": "^7.0.0",
        "lodash": "^4.17.13",
        "popper.js": "^1.12",
        "resolve-url-loader": "^3.1.2",
        "sass": "^1.20.1",
        "sass-loader": "7.*",
        "vue": "^2.5.17",
        "vue-template-compiler": "^2.6.10"
    ,
    "dependencies": 
        "bootstrap-vue": "^2.21.2",
        "uglify-js": "^3.10.3"
    

【问题讨论】:

嗨!根据laravel-mix 文档,您必须通过npx mix 运行混合。 【参考方案1】:

请运行此命令。它对我有用。

yarn install --ignore-engines

【讨论】:

【参考方案2】:

我遇到了同样的情况。几个小时后终于让它工作了。我做了什么:

    更新了 NPM npm install -g npm@latest 更新了 laravel-mix(撰写本文时为 6.0.31) 更新了 Vagrantfile https://laravel.com/docs/8.x/homestead#symbolic-links-on-windows 重新加载 PC(vagrant reload --provision 可能就足够了) 以管理员身份运行终端/phpstorm 移除旧的 node_modules、yarn.lock、package.lock,清除 NPM 缓存 重要的是使用纱线! sudo yarn install 然后sudo yarn run dev

【讨论】:

【参考方案3】:

修复 mix not found 错误的最佳方法是使用以下命令重新安装 npm: npm clean-install

【讨论】:

这个对我有用,但我在运行 npm clean-install 之前也运行了 npm install -g npm@latest【参考方案4】:
npm install laravel-mix@latest

并且您可能需要安装 vue-loader 旧版对等依赖项。通常它会在npm run dev期间自动安装或更新

【讨论】:

【参考方案5】:

您需要将 Laravel Mix、SASS Loader 依赖项升级到最新版本并安装 PostCSS 和 Webpack。

npm i --save-dev laravel-mix@latest && 
npm i --save-dev sass-loader@latest && 
npm i --save-dev postcss@latest && 
npm i --save-dev webpack@latest

你现在应该有 Laravel Mix 版本 6,所以剩下的唯一步骤就是编译你的资产。然后,使用新的 Mix 可执行文件或使用 npm。

npx mix -p

npm run prod

package.json


    "private": true,
    "scripts": 
        "dev": "npm run development",
        "development": "mix",
        "watch": "mix watch",
        "watch-poll": "mix watch -- --watch-options-poll=1000",
        "hot": "mix watch --hot",
        "prod": "npm run production",
        "production": "mix --production"
    ,
    "devDependencies": 
        "axios": "^0.21.1",
        "bootstrap": "^4.0.0",
        "bootstrap-vue": "^2.21.2",
        "clean-webpack-plugin": "^3.0.0",
        "cross-env": "^5.1",
        "jquery": "^3.2",
        "laravel-mix": "^6.0.9",
        "less": "^3.12.2",
        "less-loader": "^7.0.0",
        "lodash": "^4.17.13",
        "popper.js": "^1.12",
        "postcss": "^8.2.4",
        "resolve-url-loader": "^3.1.2",
        "sass": "^1.20.1",
        "sass-loader": "^10.1.1",
        "uglify-js": "^3.10.3",
        "vue": "^2.5.17",
        "vue-template-compiler": "^2.6.10",
        "webpack": "^5.14.0"
    

【讨论】:

您能否将 webpack.mix.js 也添加到您的答案中【参考方案6】:

我在安装laravel/ui后遇到了同样的问题:

composer require laravel/ui
php artisan ui vue --auth

在这种情况下,有两种可能的解决方案:

    只需使用RMDIR "FOLDERNAME" /S /Q 删除node_modules 文件夹,然后使用npm install 重新安装即可 只运行npm installlaravel/uiui vue 安装后(我知道,听起来很疯狂, 但这正是我的感受)

在你完成两点之一后,执行npm run dev

【讨论】:

【参考方案7】:

我遇到了同样的问题(Win 10 作为主机和 Homestead 在 Vagrant)。我尝试了上述方法,但仍然出现错误。以下内容最终为我工作:

    以管理员身份打开 powershell 导航到项目根目录 运行此命令
node c:\<path to node installation>\node_modules\npm\bin\npm-cli.js install --scripts-prepend-node-path=auto

在以前的版本中,将节点包从 vm 安装到已安装的驱动器中(没有 bin 链接,因为 windows)是可以的,laravel mix 可以工作。我的猜测是因为 package.json 文件更详细并且指定了完整路径 - difference in package.json files here。

使用新版本中的简洁语法,它需要 bin 链接来跟随参考。在没有管理员权限的情况下运行命令对我来说失败了,因为重命名文件对你来说可能不同。展望未来,这将需要成为安装节点包的新流程(在主机上与在 vm 上)。

【讨论】:

【参考方案8】:

我尝试了很多解决方案,但只有这个对我有用:

首先,更新你的 laravel-mix

npm install laravel-mix@latest

然后进行干净的 npm 安装:

npm clean-install

应该可以修复 laravel 8 mix 错误。

【讨论】:

【参考方案9】:

最近 laravel mix 已经更新到 laravel mix 6,所以我建议检查你正在使用的 npm/node 的当前版本,并尝试将它升级到最新版本。

npm -v

您可以使用以下命令升级到最新版本的 npm:

npm install -g npm@latest

或升级到最新版本:

npm install -g npm@next

【讨论】:

【参考方案10】:

如果有人遇到类似问题。

NPM 喜怒无常。有时值得尝试删除所有模块并重新安装它们:

在 Linux 上,这是一个简单的命令:rm -rf node_modules 在项目根文件夹中,

不仅仅是再次运行npm install

【讨论】:

我可以确认一下 比重新安装 laravel mix 并运行全新安装要好。 也为我工作

以上是关于Laravel,NPM:找不到命令“mix”的主要内容,如果未能解决你的问题,请参考以下文章

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

npm webpack:找不到命令

sudo:npm:找不到命令

sudo: npm:找不到命令

任何 npm 命令都会返回错误“找不到模块 yallist”,甚至 npm -v

通过 npm 安装后找不到 yarn 命令