Laravel项目npm run dev报webpack未找到但已安装的问题求助
问题描述
我正在修复一个旧版Laravel应用(版本5.8.38),当前使用Node.js 23.7.0。我的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": "^1.7.9", "bootstrap": "^5.3.3", "cross-env": "^5.1", "jquery": "^3.2", "laravel-mix": "^6.0.49", "lodash": "^4.17.13", "popper.js": "^1.12", "resolve-url-loader": "^5.0.0", "sass": "^1.15.2", "sass-loader": "^7.1.0", "vue": "^3.5.13" } }
执行npm install后安装正常。首次运行npm run dev时,收到提示:
Additional dependencies must be installed. This will only take a moment.
Running: npm install less-loader less --save-dev --legacy-peer-deps
Finished. Please run Mix again.
按照提示操作后,再次运行npm run dev却出现如下错误:
> dev > npm run development > development > mix /bin/sh: webpack: command not found
但webpack实际已安装,它是laravel-mix的依赖,在package.lock.json中可以看到:
"webpack": "^5.60.0", "webpack-cli": "^4.9.1", "webpack-dev-server": "^4.7.3", "webpack-merge": "^5.8.0", "webpack-notifier": "^1.14.1", "webpackbar": "^5.0.0-3",
且这些依赖都存在于我的node_modules目录中。
解决方法
以下是几个可行的修复方案,按优先级尝试:
方案1:用npx调用本地mix
修改package.json里的scripts命令,通过npx直接调用本地安装的mix,规避全局命令路径识别问题:
"scripts": { "dev": "npm run development", "development": "npx mix", "watch": "npx mix watch", "watch-poll": "npx mix watch -- --watch-options-poll=1000", "hot": "npx mix watch --hot", "prod": "npm run production", "production": "npx mix --production" }
修改后重新执行npm run dev即可。
方案2:降级Node.js版本
Node.js 23属于不稳定的开发版本,和旧版Laravel Mix兼容性较差。建议降级到LTS版本(比如16.x或18.x):
- 卸载当前Node.js版本
- 通过nvm等工具安装对应LTS版本
- 删除
node_modules和package-lock.json - 重新执行
npm install和npm run dev
方案3:彻底清理依赖后重装
清理现有依赖缓存和文件,避免依赖冲突:
- 删除
node_modules目录:rm -rf node_modules - 删除
package-lock.json文件:rm package-lock.json - 清除npm缓存:
npm cache clean --force - 重新安装依赖:
npm install - 再次运行
npm run dev
方案4:手动引入webpack
在webpack.mix.js文件顶部添加代码,手动引入webpack:
const webpack = require('webpack');
确保mix配置能正确调用webpack模块。
内容的提问来源于stack exchange,提问作者Tench
相关产品推荐
相关产品推荐

