npm run build 失败并显示“错误:自定义关键字定义无效:data.errors 应该是布尔值”

Posted

技术标签:

【中文标题】npm run build 失败并显示“错误:自定义关键字定义无效:data.errors 应该是布尔值”【英文标题】:npm run build fails with "Error: custom keyword definition is invalid: data.errors should be boolean" 【发布时间】:2019-07-03 19:53:54 【问题描述】:

当我尝试构建 VueJS 应用程序时,我发现 npm 出现错误。我在 GitLab CI 的 build 阶段内看到了这个错误。我找不到任何提及错误消息的地方。我之前能够成功运行npm run build,并且我没有对Vue应用程序代码进行任何更改,所以我不确定是什么导致了这个错误。

-  Building for production...
 ERROR  Error: custom keyword definition is invalid: data.errors should be boolean
Error: custom keyword definition is invalid: data.errors should be boolean
    at Ajv.addKeyword (/app/node_modules/ajv/lib/keyword.js:65:13)
    at module.exports (/app/node_modules/ajv-errors/index.js:10:7)
    at Object.<anonymous> (/app/node_modules/terser-webpack-plugin/node_modules/schema-utils/src/validateOptions.js:22:1)
    at Module._compile (internal/modules/cjs/loader.js:689:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)
    at Module.load (internal/modules/cjs/loader.js:599:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:538:12)
    at Function.Module._load (internal/modules/cjs/loader.js:530:3)
    at Module.require (internal/modules/cjs/loader.js:637:17)
    at require (internal/modules/cjs/helpers.js:22:18)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! code@0.1.0 build: `vue-cli-service build`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the code@0.1.0 build script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2019-02-09T22_32_54_384Z-debug.log
The command '/bin/sh -c npm run build' returned a non-zero code: 1
ERROR: Job failed: exit code 1

这是我用于构建 Vue 应用程序的 docker 文件中的内容:

# build stage
FROM node:10.14.2-jessie as build-stage
WORKDIR /app/
COPY frontend/package.json /app/
RUN npm cache verify
RUN npm install
COPY frontend /app/
RUN npm run build

【问题讨论】:

在新安装的 vue 应用程序上遇到了完全相同的错误。我的是npm run serve 查看包的 repo 显示 npm 报告的文件在一小时前更新。你有没有机会更新 npm 依赖项? 该问题已在 repo 中提出。命中多个依赖包。 目前这是一个简单的工作,但它对我有用。我设置了 "ajv": "6.8.1" -> github.com/rogeriochaves/npm-force-resolutions npm 更新后在 6.9.0 上仍然出现此问题 【参考方案1】:

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

如果你使用纱线

在 package.json 中添加以下内容

  "resolutions": 
    "ajv": "6.8.1"
  

然后运行yarn install

如果你使用 npm

npm uninstall ajv
npm install ajv@6.8.1

【讨论】:

【参考方案2】:

在节点模块中,我将 ajv 文件夹重命名为 ajv1。现在,我将旧版本的 ajv 文件夹从其他安装复制到 node-modules 文件夹中。它奏效了。

【讨论】:

【参考方案3】:

快速修复:

转到 node_modules 文件夹中的 ajv 依赖项:

node_modules/ajv/lib/keyword.js

注释掉第 64 和 65 行:

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

它应该没有副作用。

【讨论】:

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

Nodejs:npm run build之后,distindex.html页面在火狐中可以正常显示登录页面并登录成功,在Chrome中可以正常显示登录页面,登录失败

npm run build - 编译失败 - 无法读取未定义的属性“toLowerCase”

React npm run build 每次都失败

npm run build在bitbucket管道中失败,因为它无法解析某些文件

命令“npm run build -- --prod”退出并出现代码 1 错误

npm run build 时的 warning