【问题标题】:Function isn't being called in Node Js using REST API未使用 REST API 在 Node Js 中调用函数
【发布时间】:2019-04-20 19:53:49
【问题描述】:

我正在用 Node JS 编写代码,它使用 mustache 模板化 html 和 REST API 作为后端。

这是我的代码不起作用。

function setupRoutes(app) {
 const base = app.locals.base;

app.get(`${base}/search.html`,doSearchContent(app));   
app.get(`${base}/:name`,doGetContent(app));     
}

function doSearchContent(app) {
  return async function(req, res) {
    console.log("here");
  }; };

当我运行我的程序并转到 base/search.html 时。它从不调用 doSearchContent 方法。

知道为什么以及如何解决这个问题吗?

编辑:doGetContent 按预期工作。当我运行 search.html 时它没有

【问题讨论】:

  • 您能分享一下您使用的框架吗?您正在使用某种路由器。

标签: node.js rest


【解决方案1】:

快速路径应以斜杠开头。请将您的路线更改为以下内容:

...
app.get(`/${base}/search.html`,doSearchContent(app));   
app.get(`/${base}/:name`,doGetContent(app));
...

Express 将 http 请求的路径与为所有路由提供的“路径”进行匹配,以决定必须调用哪些路由。由于 http 路径总是以斜杠开头,因此您的路由还必须指定要匹配的路径。

【讨论】:

    【解决方案2】:

    这些行

    app.get(`${base}/search.html`,doSearchContent(app));   
    app.get(`${base}/:name`,doGetContent(app)); 
    

    未按预期工作。在 Express 路由中,我们不直接调用函数。相反,我们要么传递要调用的回调函数的 name,它接收 reqres 参数,要么传递匿名回调。在你的情况下,它可能是这样的:

    app.get(`${base}/search.html`,(req, res) => {
        console.log("It's alive!");
        doSearchContent(app);
    });   
    app.get(`${base}/:name`, (req, res) => { 
        doGetContent(app)
    }); 
    

    快速路径应以斜杠开头。

    这不是真的

    【讨论】:

    • 我试过用这个方法。它还活着还没有被打印出来
    • 在 OP 的示例中,doSearchContent 返回一个函数,所以这应该仍然有效。
    • @Evert 理想情况下这应该可以工作,这就是为什么我不确定它为什么不工作
    • @Evert 是的,这确实是一个忽略。 @Mike Ross 在这种情况下,您可以在您的路线前面加上app.use('*', (req, res, next) => { console.log(req.originalUrl); next() }),以检查您的实际路线是否匹配${base}/search.html
    • @AntonPastukhov 我试过了,即使是 search.html 页面也没有打印出来
    【解决方案3】:

    您是否添加了 search.html 文件或使用模板来构建 HTML?

    确保调用的是模板而不是 html 文件。

    除了你的代码看起来不错,它应该可以工作

    【讨论】:

    • 我添加了一个 html 文件。谢谢。我制作了一个模板文件,现在可以使用了:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-23
    • 1970-01-01
    • 2019-05-30
    • 2020-10-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多