错误“自定义关键字定义无效:data.errors 应该是布尔值”

Posted

技术标签:

【中文标题】错误“自定义关键字定义无效:data.errors 应该是布尔值”【英文标题】:Error "custom keyword definition is invalid: data.errors should be boolean" 【发布时间】:2019-07-03 20:04:16 【问题描述】:

我刚刚使用这个命令创建了一个新的 React 应用程序:

create-react-app mysite.com

安装后,当我尝试使用npm startyarn start 打开它时,出现以下错误。

throw new Error('custom keyword definition is invalid: '  + this.errorsText(validateDefinition.errors));
      ^

Error: custom keyword definition is invalid: data.errors should be boolean
    at Ajv.addKeyword (/Users/myAccount/Documents/Dev/Projects/ReactJS/mysite.com/node_modules/ajv/lib/keyword.js:65:13)

我该如何解决这个问题?

【问题讨论】:

不确定,但可能项目名称中不允许使用点?那可能会导致这样的错误...... 谢谢@Luan,我刚刚创建了一个没有点且没有大写字母的新应用:create-react-app profilesite,但它仍然给我同样的错误。 您也可以尝试将您的全局安装的 create-react-app 更新到最新版本,或者至少检查您的版本。同样,只是猜测。 【参考方案1】:

恢复到稳定版本的 ajv 库也可以:

npm uninstall ajv
npm install ajv@6.8.1

【讨论】:

【参考方案2】:

我认为这是“@symfony/webpack-encore”带来的新东西:“^0.23.0”。但是,ajv 库存在问题。

脏修复:

node_modules\ajv-errors\index.js

将第 14 行的 errors: 参数从 'full' 更改为 true

彻底修复(临时):

使用以下代码修改您的 package.json

"resolutions": 
    "ajv": "6.8.1"

【讨论】:

您的干净修复应该高于您的脏修复 imo,这是解决此问题的最佳答案(干净修复版本)【参考方案3】:

注释掉第 64-65 行的 node_modules/ajv/lib/keyword.js 以获得变通解决方案:

if (!validateDefinition(definition))
  throw new Error('custom keyword definition is invalid: '  + this.errorsText(validateDefinition.errors));

参考:https://github.com/webpack/webpack/issues/8768

【讨论】:

【参考方案4】:

当我尝试使用 npx 创建新的 nuxt 应用程序时出现此错误:

npx create-nuxt-app <project-name>

我做到了

npm uninstall ajv
npm install ajv@6.8.1 

就像@robert Rodriguez,它可以正常工作,没有错误。

【讨论】:

我不会投反对票,但这个答案对罗伯特·罗德里格斯的答案有什么好处? 对于初学者确认它有效。第二,React 并不是唯一出现此错误的地方。我使用的是 Nuxt 而不是 React,也许有人为 Nuxt 项目查找此问题,他们会发现这很有帮助。第三他的解决方案很简单,不涉及调整 ajv 包文件。如果您对此问题有更好的解决方案,请告诉我们 Les。我想看看。谢谢! 好的,谢谢你的解释,很抱歉打扰。 (我没有其他解决方案)。

以上是关于错误“自定义关键字定义无效:data.errors 应该是布尔值”的主要内容,如果未能解决你的问题,请参考以下文章

远程服务器返回错误: 404错误远程服务器返回错误:500错误 HttpWebResponse远程服务器返回错误:(404500) 错误。

Pig 安装错误:错误 pig.Main:错误 2998:未处理的内部错误

Informix 错误:发生了语法错误。错误代码:-201

我收到一个错误:“MetaMask - RPC 错误:错误:错误:[ethjs-rpc] rpc 错误与有效负载”

错误精灵错误跟踪器错误

网页打开显示错误500是啥意思