【问题标题】:How to check for a React route inside ExpressJS server.js?如何检查 ExpressJS server.js 中的 React 路由?
【发布时间】:2019-10-01 09:38:51
【问题描述】:

我为我的 React 应用程序定义了一个特定的路由。我想在我的 server.js 中检查它,因为我需要执行一个特定的调用,但由于某种原因我不能使用 AJAX 调用。

路线是这样的:some-slug/asset/some-more-sluggish-matter/

/asset/ 将保持不变。这是我尝试过的:

app.get('/(.* )?(\/asset\/)(.* )?', function (req, res) {
    console.log('Route found');
});

不起作用。如果我删除引号,则会引发正则表达式未终止的错误。

【问题讨论】:

  • 您似乎将快速路由与反应路由混淆了。 <Route path="/asset" component={AssetPage} /> 如果浏览器中的 url 匹配“/asset”,则简单地告诉 React 渲染该特定组件。您上面给出的代码是 expressJS 代码,它表示如果传入的 GET 请求的 URL 与此匹配,则运行此代码。你能详细说明你到底想要完成什么吗?
  • 谢谢@ManavM,两端的路由我都清楚了,我只是想匹配根url后面的片段来进行服务器端API调用。
  • 我明白了...您定义上述路径的方式的问题在于您已将其定义为正则表达式,但使用单引号而不是正斜杠,因此 express 将其作为字符串读取。 .您还应该转义每个正斜杠(您的第一个斜杠没有转义)...如果您想使用正则表达式,那么您的路径应该定义为/\/(.* )?(\/asset\/)(.* )?/
  • 添加一个不同的正则表达式作为答案,因为我认为这是一个更准确的正则表达式

标签: node.js regex reactjs express routing


【解决方案1】:

您定义上述路径的方式的问题在于您已将其定义为正则表达式,但使用单引号而不是正斜杠,因此 express 将其读取为字符串..您还应该转义每个正斜杠 (你的第一个没有逃脱)...

你的路径应该被定义为/.*(\/asset\/).*/

【讨论】:

    猜你喜欢
    • 2018-05-29
    • 1970-01-01
    • 2020-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-08
    相关资源
    最近更新 更多