Quasar错误:找不到模块'ajv/dist/compile/codegen'。

31

(node:21216) 未处理的Promise拒绝警告: 错误:找不到模块'ajv/dist/compile/codegen'

  • loader.js:815 Function.Module._resolveFilename internal/modules/cjs/loader.js:815:15

  • loader.js:667 Function.Module._load internal/modules/cjs/loader.js:667:27

  • loader.js:887 Module.require internal/modules/cjs/loader.js:887:19

  • helpers.js:74 require internal/modules/cjs/helpers.js:74:18

  • typeof.js:3 Object. [front]/[mini-css-extract-plugin]/[ajv-keywords]/dist/definitions/typeof.js:3:19

  • loader.js:999 Module._compile internal/modules/cjs/loader.js:999:30

  • loader.js:1027 Object.Module._extensions..js internal/modules/cjs/loader.js:1027:10

  • loader.js:863 Module.load internal/modules/cjs/loader.js:863:32

  • loader.js:708 Function.Module._load internal/modules/cjs/loader.js:708:14

  • loader.js:887 Module.require internal/modules/cjs/loader.js:887:19

(node:21216) 未处理的 Promise 拒绝警告:未处理的 promise 拒绝错误是由于在 async 函数中没有使用 catch 块抛出,或者拒绝了一个未被 .catch() 处理的 promise 引起的。若要在出现未处理的 promise 拒绝时终止 Node.js 进程,请使用 CLI 标志 --unhandled-rejections=strict(参见https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode)。 (拒绝 id:1) (node:21216) [DEP0018] 弃用警告:未处理的 promise 拒绝已弃用。未来,未处理的 promise 拒绝将以非零退出代码终止 Node.js 进程。


3
问题似乎出现在 mini-css-extract-plugin 的版本 2.4.3 和 2.4.5 之间的某个地方。目前,将 mini-css-extract-plugin 回退到 2.4.2 版本可以解决问题。运行命令:npm i mini-css-extract-plugin@2.4.2 --save-exact - Ted Chirvasiu
4个回答

45

当我使用JHipster时,我遇到了同样的问题,通过运行这个命令解决了问题。

npm install --save-dev ajv@^7 

感谢这个 答案


5
请确保运行 npm list ajv 命令以了解您需要的版本。对于我来说,需要安装 npm install --save-dev ajv@8 - Cyril Duchon-Doris

9

我发现我的package-lock.json文件施加了限制,导致npm无法解决问题。

首先,我使用npm ls ajv非常有帮助地说明了依赖项的来源(感谢@Greg Trevellick)。

对我来说,解决方案可能有点激进,是删除package-lock.json文件和node_modules目录并重新安装。

rm -rf package-lock.json node_modules
npm install

6

最近我多次遇到了相同的错误。在我的情况下,这个错误基于ajv-keywordsajv-formats插件与node js 8和12(旧项目)不兼容。

为了分析问题,你可以始终使用npm ls ajv命令来查看哪个模块尝试使用不兼容的内容。

个人而言,我花了好几天时间才找到适合ajv schemanodeajv plugins正常工作的正确组合。 (在我的情况下,我使用了ajv 6.4.x,然后必须将其降级至6.12,再使用ajv-keywords@3.5.1ajv-formats@1.5.1,并将它们降级至3.01.4


1
npm ls ajv 帮助我找到了向 package.json 添加特定版本的 ajv 的方法。 - Greg Trevellick

1
这最近发生在我身上,我在我的.npmrc文件中有legacy-peer-deps=true,并且我删除了它,删除了我的node_modules和package-lock.json,然后一切都正常了。

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