Node.js 错误 - AssertionError [ERR_ASSERTION]:模式不应使用全局或粘性模式......重新安装软件包后

Phi*_*p M 2 node.js

我有两个 node.js 项目在 v10.14.2 上运行。两者都工作正常。

然后我删除了 package.json 中的所有包并像这样重新安装它们:

$ npm install <package01> <package02> <package03> ...
Run Code Online (Sandbox Code Playgroud)

安装成功。添加了 155 个贡献者的 228 个包并在 11.48 秒内审计了 393 个包发现 0 个漏洞

尝试运行它时,我现在收到一条错误消息:

$ nodemon project01
Run Code Online (Sandbox Code Playgroud)

错误信息:

[nodemon] starting `node project01.js`
/home/Project01/node_modules/hoek/lib/index.js:553
    throw new Assert.AssertionError({
    ^

AssertionError [ERR_ASSERTION]: pattern should not use global or sticky mode
    at new AssertionError (internal/assert.js:269:11)
    at Object.exports.assert (/home/Project01/node_modules/hoek/lib/index.js:553:11)
    at internals.String.regex (/home/Project01/node_modules/joi/lib/types/string/index.js:122:14)
    at Object.<anonymous> (/home/Project01/helpers/routeHelpers.js:58:27)
    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)
[nodemon] app crashed - waiting for file changes before starting...
Run Code Online (Sandbox Code Playgroud)

第二个应用程序相同:

$ npm install <package01> <package02> <package03> ...
Run Code Online (Sandbox Code Playgroud)

安装成功。添加了来自 116 个贡献者的 151 个包并在 10.571 秒内审计了 303 个包发现 0 个漏洞

$ nodemon project02
Run Code Online (Sandbox Code Playgroud)

错误信息:

[nodemon] starting `node project02.js`
/home/Project02/node_modules/hoek/lib/index.js:553
    throw new Assert.AssertionError({
    ^

AssertionError [ERR_ASSERTION]: pattern should not use global or sticky mode
    at new AssertionError (internal/assert.js:269:11)
    at Object.exports.assert (/home/Project02/node_modules/hoek/lib/index.js:553:11)
    at internals.String.regex (/home/Project02/node_modules/joi/lib/types/string/index.js:122:14)
    at Object.<anonymous> (/home/Project02/helpers/routeHelpers.js:47:27)
    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)
[nodemon] app crashed - waiting for file changes before starting...
Run Code Online (Sandbox Code Playgroud)

我错过了什么,我需要做什么来解决这个问题?

dan*_*ive 6

当您升级到v14时,此错误来自@hapi/joi。没有与正则表达式重大更改和。您不能再使用全局 (g) 或粘性 (y) 标志。这些标志以前被忽略,但现在它们被拒绝。object.patternstring.regex

例如全局被忽略 joi.string().regex(/^[a-z0-9_-]{1,25}$/ig)

现在必须删除全局标志 joi.string().regex(/^[a-z0-9_-]{1,25}$/i)

参考@hapi/joi发行说明 https://github.com/hapijs/joi/issues/1615