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 install
在laravel/ui
和ui 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)的解决办法