Node.js 如何使用 RegEx 对象回复,Hapijs

Node.js how to reply with RegEx object, Hapijs

我正在尝试将端点写入 return 我们在网络应用程序中使用的一组正则表达式,以从服务器端对其进行标准化。

  const myRegExp: RegExp = /^\d{10}$/;
  return reply(myRegExp);

问题是此回复在调用时以 {} 形式出现

如果我回复一个字符串、一个数字、一个对象,世界上任何东西......它都会按预期通过回复。回复一个 RegExp 类型的参数,returns 一个空对象 {}

如何在我的 Node / Hapi 端点发回原始 RegExp 正则表达式?

是的,我知道我可以用 myRegExp.source 回复,然后用 new RegExp(resp) 重新创建,但这似乎很愚蠢,除非我被迫这样做。

hapi returns 具有空对象的原因是正则表达式对象没有任何 public 属性。你可以通过你的控制台看到它。

> let x = new RegExp('/\d/')
> x
/\/d\//
> Object.keys(x)
[]

我认为正确的做法是 return myRegExp.source 然后在客户端代码中使用 new RegExp(resp) 并没有那么傻。

或者您可以 return 将您的正则表达式定义为字符串,例如

reply('/^\d{10}$/')

然后您可以通过 new RegExp(resp)

在您的客户端代码中使用它

我认为不可能直接从服务器到浏览器 returning 评估的 regexp 对象。也许你可以这样做;

reply(`const myRegExp = new RegExp(/^\d{10}$/);`).type("application/javascript");

现在您刚刚从服务器加载了一个 javascript,但我认为它没有用。