小编Uma*_*til的帖子

Joi 验证错误来自哪个字段,在 UI 中在其旁边显示错误

我必须使用 Joi 验证库来验证 API 输入,然后发送输出。

我说过创建了一个架构如下:

import Joi from '@hapi/joi'

const eventSchema = Joi.object({
  title: Joi.string()
    .min(7)
    .max(50)
    .required()
    .error(() => Error('Event title has to be least 7 and max 50 characters.')),

  description: Joi.string()
    .min(10)
    .max(400)
    .required()
    .error(() => Error('Event description has to be least 10 and max 400 characters.')),

  place: Joi.string()
    .min(6)
    .max(40)
    .required()
    .error(() => Error('Event place has to be least 6 and max 40 characters.'))
})
export default eventSchema
Run Code Online (Sandbox Code Playgroud)

当我验证这一点时,我收到了预期的验证错误。这里的问题是我不知道哪个字段真正导致了错误。我想知道这一点,因为我想准确地在导致错误的字段旁边显示错误,而不是仅在表单顶部显示通用验证消息。

const isValid = eventSchema.validate()

if (isValid.error) { …
Run Code Online (Sandbox Code Playgroud)

javascript node.js joi hapi.js

2
推荐指数
1
解决办法
7400
查看次数

Webpack:如何在客户端(浏览器)端注入 process.env 运行时,使构建独立于环境

简短问题

我正在寻找某种方法来告诉 Webpack,不要对process变量执行任何操作,只需像任何其他全局变量一样对待(因此它引用客户端捆绑包中的 window.process )。如果不可能,那么可以process.env在客户端运行时在 Webpack 中注入变量。

长解释

目前,我使用 Webpack 来打包我的 React (SSR) 应用程序。我有 5 个环境,例如 dev1、dev2...登台和生产。我想重复使用相同的构建并保持可配置性,例如每个环境上的 Google Analytics ID 是不同的。

后端 Dot ENV 模块完成这项工作。我可以将所有常量定义为文件KEY=value中的对.env,并在运行时加载它们并process.env.KEY在代码中使用。

我试图为前端(或共享文件)复制相同的行为。假设我有一个baseService.js拨打电话的电话fetch。它也可以从节点+客户端使用。它使用诸如 之类的变量process.env.HOST。到目前为止,我一直在为每个环境创建单独的构建,因此使用webpack.DefinePlugin插件在 Webpack 中定义了它,以便能够在客户端捆绑包上使用它。

现在,当我想重新使用构建时,我捕获所有常量,通过process.env将它们与(它将匹配 PUBLIC_KEY)进行匹配来查看它们是否可以在客户端使用PUBLIC_(.*),如果是,则将其打包到数组中并添加到主 html 文件中对象如下图所示:-

window.process = {ENV: { PUBLIC_GA_ID: '1235', PUBLIC_FOO: 'bar' }}
Run Code Online (Sandbox Code Playgroud)

当我使用 webpack 捆绑我的客户端时,执行process.env.PUBLIC_GA_ID是未定义的(尽管它在 head html 中作为全局window.process变量)。这是因为 webpack 仍然从 Node 向前端注入进程变量,前端的env对象为空白 …

javascript node.js webpack webpack-4

2
推荐指数
1
解决办法
1万
查看次数

解析运算符并在JavaScript中对它们进行评估

我想解析一个包含if语句并评估其输出的字符串.

我可以得到评估部分,但其他人对我来说太复杂了.

请看以下示例:

  • if $a == 10 && ($b == '5' || $c == 'test')
  • if $x != 10 || $y == false
  • if $z < 10

我想让它们在数组中 - 也就是说,我想要的相应示例的输出将是:

  • [ [ '$a', '==', '10' ], '&&', [ [ '$b', '==', '5' ], '||', [ '$c', '==', 'test' ] ] ]
  • [ [ '$x', '!=', '10' ], '||', [ '$y', '==', 'false' ] ]
  • [ '$z', '<', '10' ]

我想我要求太多的逻辑/代码,但如果有人能帮助我,这将是很好的.使用正则表达式或正常的字符串解析是可以的.

javascript regex parsing operators

1
推荐指数
1
解决办法
2560
查看次数

在字符串中查找注释

我的文件在顶部有评论.

例如

/**
 * Comments for file.
 *
 */
Run Code Online (Sandbox Code Playgroud)

使用PHP,我使用file_get_contents将文件内容读入变量现在我想在注释中获得值.对于上面的例子,预期结果将是

* Comments for file
*
*
Run Code Online (Sandbox Code Playgroud)

这意味着我想要内容/**和*/.这个文件可以有多个注释,但我想要第一个位于文件顶部的文件.

有什么想法/帮助吗?

更新: - 这是普通的文本文件.不是PHP文件.

php regex comments file

0
推荐指数
1
解决办法
110
查看次数

获取 Node 中的 DNS MX 记录

我想要获取主机名 www.example.com 的 MX 记录。节点有它的功能。

dns.resolveMx(domain, callback)
Run Code Online (Sandbox Code Playgroud)

但我不想要那个回调的东西。我想要同步通话之类的东西。例如

var records = dns.resolveMx(domain);
Run Code Online (Sandbox Code Playgroud)

这可能吗 ?

(注意:- 我在 Node 文档中找到了该函数。链接:- http://nodejs.org/api/dns.html

javascript dns node.js

0
推荐指数
1
解决办法
5042
查看次数

标签 统计

javascript ×4

node.js ×3

regex ×2

comments ×1

dns ×1

file ×1

hapi.js ×1

joi ×1

operators ×1

parsing ×1

php ×1

webpack ×1

webpack-4 ×1