Laravel,NPM:命令“mix”未找到。

33
有人知道为什么会出现以下错误并如何修复吗?我尝试过多次使用npm install重新安装所有包。在Windows上重新安装NodeJS也没有起作用;我正在使用Laravel 8.22.0。

enter image description here

完整日志
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 运行 mix。 - Yurij
11个回答

90

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

首先,更新你的laravel-mix。

npm install laravel-mix@latest

然后执行 npm install 命令:

npm clean-install

这应该可以解决 Laravel 8 Mix 错误。


27

如果有人遇到类似的问题,以下是翻译建议:

NPM 有时会出现问题。有时删除所有模块并重新安装可能会有所帮助:

在 Linux 上,只需在项目根目录中运行 rm -rf node_modules 命令即可。

然后再次运行 npm install 命令即可。


2
我可以确认这个。 - Tenarius
比重新安装 Laravel Mix 并运行清洁安装更好。 - 0xcrypto
干得好,这些修复总是最简单并且运行良好。 - Mick Davies

10

你需要将 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 也添加到您的答案中? - K.B

5
最好的解决方法是重新使用命令 npm clean-install 安装npm来修复找不到mix错误

这个方法对我有效,但在运行 npm clean-install 之前,我也运行了 npm install -g npm@latest。 - Brett
太好了,谢谢!这个命令单独运行就可以,也不需要将任何新的内容提交到git中。 - Kush

2

最近 Laravel Mix 已经更新到 Laravel Mix 6,所以我建议您检查您正在使用的 npm/node 的当前版本,然后尝试将其升级到最新版本。

npm -v

您可以使用以下命令升级到最新版本的npm:
npm install -g npm@latest

或者升级到最新版本:

npm install -g npm@next

2
npm install laravel-mix@latest

你可能需要安装vue-loader的旧版本依赖关系。通常在npm run dev期间会自动安装或更新。


0

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

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

在这种情况下有两种可能的解决方案:
  1. 只需使用RMDIR "FOLDERNAME" /S /Q删除node_modules文件夹,然后使用npm install重新安装
  2. laravel/uiui vue都已安装后,运行npm install(我知道,听起来很疯狂,但这正是我的情况)
完成其中一项操作后,请执行npm run dev

0
升级 Node 对我来说解决了这个问题,从 12 版本升级到 18 版本。这可能是解决这个问题的一个方法。

0

我也遇到了同样的问题(使用Win 10作为主机和Vagrant中的Homestead)。我尝试了上面的方法,但仍然出现错误。最终以下方法适用于我:

  1. 以管理员身份打开PowerShell
  2. 进入项目根目录
  3. 运行此命令
node c:\<path to node installation>\node_modules\npm\bin\npm-cli.js install --scripts-prepend-node-path=auto

在之前的版本中,从虚拟机安装节点包到挂载的驱动器上(因为Windows没有bin链接)是可以的,Laravel Mix也能正常工作。我猜测这是因为package.json文件更详细并指定了完整路径-在这里package.json文件的差异
在新版本中,由于简洁的语法,它需要bin链接来跟随引用。对我来说,以非管理员权限运行命令失败,因为重命名文件可能对你来说不同。未来,在主机上安装节点包将需要采用这种新的流程,而不是在虚拟机上安装。

0

我也遇到了同样的情况。经过几个小时的努力,最终解决了问题。我的做法如下:

  1. 更新 NPM npm install -g npm@latest
  2. 更新 laravel-mix(目前版本为 6.0.31)
  3. 更新 Vagrantfile https://laravel.com/docs/8.x/homestead#symbolic-links-on-windows
  4. 重新启动电脑(vagrant reload --provision 应该就足够了)
  5. 以管理员身份运行终端/PhpStorm
  6. 删除旧的 node_modules、yarn.lock、package.lock,并清除 NPM 缓存
  7. 重要提示:使用 YARN!sudo yarn install 然后 sudo yarn run dev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接