运行npm run watch/dev时出现TypeError: dep.getResourceIdentifier is not a function错误
解决Laravel Mix中
dep.getResourceIdentifier is not a function报错问题 我之前维护Laravel项目时也碰到过完全一样的报错,大概率是Webpack和Laravel Mix的版本不兼容导致的,结合我的排查经验,给你几个可行的解决步骤:
清理依赖环境,从头开始
先把旧的依赖文件全部清理掉,避免缓存带来的冲突:- 删除项目根目录的
node_modules文件夹:rm -rf node_modules # Mac/Linux # 或者Windows命令行 rmdir /s/q node_modules - 删除
package-lock.json文件:rm package-lock.json - 强制清理npm缓存:
npm cache clean --force
- 删除项目根目录的
锁定兼容的依赖版本
这个报错通常出现在旧版Laravel Mix(2.x/3.x)搭配过高版本Webpack(4+)的场景。你可以修改package.json中的devDependencies,指定一组经过验证的兼容版本:"devDependencies": { "laravel-mix": "^2.1.14", "webpack": "^3.12.0", // 其他依赖保持原有版本即可 }修改完成后执行
npm install重新安装依赖。检查
bootstrap.js的语法问题
报错信息明确指向了resources/assets/js/bootstrap.js文件,你需要打开这个文件检查:- 是否有错误的模块导入语句
- 是否存在未闭合的括号、引号
- 是否引用了不存在的依赖包
有时候这类语法错误也会触发Webpack的异常报错。
尝试使用轮询模式监听文件
如果是文件监听机制的问题,可以试试watch-poll命令代替watch:npm run watch-poll这个命令会主动轮询文件变化,避免某些系统下的监听失效问题。
内容的提问来源于stack exchange,提问作者Jelmer Bouman
相关产品推荐
相关产品推荐

