运行vue-cli-service serve时出现Cannot find module 'ajv'错误求助
问题描述
执行vue-cli-service serve --mode dev时触发编译错误:Module build failed: Error: Cannot find module 'ajv',相关背景信息:
ajv为项目间接依赖,未在package.json中声明为直接依赖- 当前环境:Node.js
v14.17.6、npm6.14.15 npm install执行无报错,仅启动开发服务时触发该问题
完整错误栈:
ERROR in ./src/main.ts Module build failed: Error: Cannot find module 'ajv' Require stack: - /Users/<user>/node_modules/schema-utils/dist/validate.js - /Users/<user>/node_modules/schema-utils/dist/index.js - /Users/<user>/node_modules/cache-loader/dist/index.js - /Users/<user>/node_modules/cache-loader/dist/cjs.js - /Users/<user>/<project>/node_modules/webpack/lib/ProgressPlugin.js - /Users/<user><project>/node_modules/progress-webpack-plugin/index.js - /Users/<user><project>/node_modules/@vue/cli-service/lib/commands/serve.js - /Users/<user>/<project>//node_modules/@vue/cli-service/lib/Service.js - /Users/<user>/<project>/node_modules/@vue/cli-service/bin/vue-cli-service.js at Function.Module._resolveFilename (internal/modules/cjs/loader.js:889:15) at Function.Module._load (internal/modules/cjs/loader.js:745:27) at Module.require (internal/modules/cjs/loader.js:961:19) at require (internal/modules/cjs/helpers.js:92:18) at Object.<anonymous> (/Users/<user>/node_modules/schema-utils/dist/validate.js:15:13) at Module._compile (internal/modules/cjs/loader.js:1072:14) at Object.Module._extensions..js (internal/modules/cjs/loader.js:1101:10) at Module.load (internal/modules/cjs/loader.js:937:32) at Function.Module._load (internal/modules/cjs/loader.js:778:12) at Module.require (internal/modules/cjs/loader.js:961:19) at require (internal/modules/cjs/helpers.js:92:18) at Object.<anonymous> (/Users/<user>/node_modules/schema-utils/dist/index.js:3:18) at Module._compile (internal/modules/cjs/loader.js:1072:14) at Object.Module._extensions..js (internal/modules/cjs/loader.js:1101:10) at Module.load (internal/modules/cjs/loader.js:937:32) at Function.Module._load (internal/modules/cjs/loader.js:778:12) webpack compiled with 1 error No issues found.
原因分析
- npm 6.x依赖解析缺陷:npm 6版本在处理嵌套依赖时存在已知解析问题,可能导致深层间接依赖(如
schema-utils依赖的ajv)未被正确安装,即使npm install表面执行成功。 - 锁文件或缓存损坏:
package-lock.json文件损坏,导致npm安装时无法正确解析依赖树,跳过了ajv的安装;或本地npm缓存中ajv包的文件损坏,安装时直接复用了错误缓存。 - 依赖版本冲突:项目中不同直接依赖对
schema-utils的版本要求不一致,npm在合并依赖树时可能出现依赖缺失,或者安装了不兼容的schema-utils版本,导致其无法找到ajv。 - 文件权限问题:安装过程中
node_modules目录权限不足,导致ajv包的部分文件写入失败,但npm install未抛出明确错误,最终运行时找不到模块。
内容的提问来源于stack exchange,提问作者Carabes
相关产品推荐
相关产品推荐

