【问题标题】:Node/Express: Use a function request from another fileNode/Express:使用来自另一个文件的函数请求
【发布时间】:2020-12-23 16:06:52
【问题描述】:

首先,我是一名前端开发人员,如果我在解释中使用了错误的术语,我深表歉意。

在我的公司,我们实际上正在构建 1 个 Web 应用程序和 2 个 API 应用程序。因此,用户使用与第一个 API 对话的 Web 应用程序,该 API 与第二个 API 对话。

这里,我们在第一个 API 中,在 server.js 文件中:

server.js
---------

var app = express();

const cats = require("./api/cats");

app.get("/animals/cats", cats.listTheCats); // listTheCats() returns an array of cats

在cats.js 中,我们可以通过listTheCats() 看到我们正在向第二个API 发送另一个请求:

cats.js
-------

const listTheCats = (req, res) => {
    axios({
        method: "get",
        url: "http://second-api-url.com/animals/cats",
        params: req.query,
    })
        .then((ans) => {
            res.status(ans.data.status).json(ans.data.data);
        })
        .catch((err) => {
            console.log(err);
            res.sendStatus(503);
        });
};

module.exports = listTheCats;

上面的代码在网络应用上运行良好。但是现在,在第一个 api 中,在另一个名为“cuteAnimals.js”的文件中,我需要调用 listTheCats()。所以我尝试这样做,但它不起作用:

cuteAnimals.js
--------------

const { listTheCats } = require("./cats");

const fetchCats = async () => {
    const params = {
        type: "cute",
    };

    const cuteCats = await axios.get(`animals/cats`, {
        params,
    });

    // or const cuteCats = await listTheCats(params);

    console.log("cuteCats", cuteCats);
 };

fetchCats();

这是错误:“请求失败,状态码为 400”

在cuteAnimals.js中,使用axios从一个文件到同一个服务器项目的另一个文件是否正确?

【问题讨论】:

  • 感谢您的回答。不幸的是,这行代码已经写在我的代码中了,我忘了在这里添加到我的帖子中......
  • 你上次sn-p中使用的参数是怎样的?
  • 在上面的代码块“cats.js”中,“params”对象应该位于req.query 属性中,该属性分配给get 请求的“params”属性。这就是为什么我怀疑我在“cuteAnimals.js”文件中使用 axios 的方式是错误的。我什至不确定 URL“animals/cats”是否指向服务器端口。在“cuteAnimals.js”中,我还尝试直接使用导入的 listTheCats() 函数而不是 axios.get(...) 但在记录结果时出现“未定义”。它的行为没有延迟,因为它是同步的,但它不应该并且使用 async/await 词并不能解决它..

标签: javascript node.js express axios backend


【解决方案1】:

你需要导出函数才能在另一个文件中使用它,你可以简单地在cats.js末尾写下这一行

module.exports = listTheCats

【讨论】:

  • 感谢您的回答。不幸的是,这行代码已经写在我的代码中了,我忘了在这里添加到我的帖子中......
猜你喜欢
  • 1970-01-01
  • 2017-12-02
  • 2014-09-27
  • 1970-01-01
  • 2013-03-08
  • 2022-08-16
  • 2014-12-29
  • 1970-01-01
  • 2014-11-25
相关资源
最近更新 更多