javascript - 在学习 NodeJs 时,我遇到了 "cannot get ' 地址“”问题

标签 javascript node.js backend

在学习 Nodejs 时,我遇到了“无法获取‘地址’”问题 前几天开始学习Nodejs...

我尝试创建我的本地服务器并按其用途划分文件。

在我的 Node 项目中,有

1.index(主文件) 2.路线 3.routers文件夹(包括全局路由器、类(class)路由器...等) 4.controllers文件夹(包括全局 Controller ,类(class)路由器...等) 5.babelrc 6.package.json

这是我的index.js


    import express from "express";
    import routes from "./routes";
    import globalRouter from "./routers/globalRouter";
    import coursesRouter from "./routers/coursesRouter";
    // import apiRouter from "./routers/apiRouter";
    // import apiV1Router from "./routers/apiV1Router";
    // import apiV2Router from "./routers/apiV2Router";

    const app = express();

    app.use(routes.home, globalRouter);
    app.use(routes.courses, coursesRouter);
    //app.use(routes.apiDocumentation, apiRouter);
    //app.use(routes.apiV1, apiV1Router);
    //app.use(routes.apiV2, apiV2Router);

    // app.use(routes.remove, apiV2Router);
    // app.use(routes.edit, apiV2Router);

    // Codesanbox does not need PORT :)
    app.listen(() => console.log(`Listening!`));

这是我的 globalRouter.js


    import express from "express";
    import routes from "../routes";
    import {
      home,
      join,
      login,
      confirmAccount
    } from "../controllers/globalController";

    const globalRouter = express.Router();

    globalRouter.get(routes.home, home);
    globalRouter.get(routes.join, join);
    globalRouter.get(routes.login, login);
    globalRouter.get(routes.confirmAccount, confirmAccount);

    export default globalRouter;

这是我的全局 Controller


    export const home = (req, res) => res.send("home");
    export const join = (req, res) => res.send("join");
    export const login = (req, res) => res.send("login");
    export const confirmAccount = (req, res) => res.send("confirm account");

我的类(class)路由器


    import express from "express";
    import routes from "../routes";
    import { courses, _new, mine } from "../controllers/coursesController";

    const coursesRouter = express.Router();

    coursesRouter.get(routes.courses, courses);
    coursesRouter.get(routes.new, _new);
    coursesRouter.get(routes.mine, mine);

    export default coursesRouter;

我的类(class) Controller


    export const courses = (req, res) => res.send("courses");
    export const _new = (req, res) => res.send("new");
    export const mine = (req, res) => res.send("mine");

我的routes.js


    //Global
    const HOME = "/";
    const JOIN = "/join";
    const LOGIN = "/login";
    const CONFIRM_ACCOUNT = "/confirm-account";

    //Courses
    const COURSES = "/courses";
    const NEW = "/courses/new";
    const MINE = "/courses/mine";

    //Api
    const API = "/api";
    const API_DOCUMENTATION = "/api/documentation";

    //Api V1
    const API_V1 = "/api/v1";
    const API_V1_BUY = "/api/v1/buy";
    const API_V1_REFUND = "/api/v1/refund";

    //Api V2
    const API_V2 = "api/v2";
    const API_V2_REMOVE = "/api/v2/remove";
    const API_V2_EDIT = "/api/v2/edit";

    const routes = {
      home: HOME,
      join: JOIN,
      login: LOGIN,
      confirmAccount: CONFIRM_ACCOUNT,
      courses: COURSES,
      new: NEW,
      mine: MINE,
      api: API,
      apiDocumentation: API_DOCUMENTATION,
      apiV1: API_V1,
      apiV2: API_V2,
      apiV1Buy: API_V1_BUY,
      apiV1Refund: API_V1_REFUND,
      apiV2Remove: API_V2_REMOVE,
      apiV2Edit: API_V2_EDIT
    };

    export default routes;

我不认为路线有问题,但是......

当我单独测试全局路由器时, 它有效((例如)“localhost:4000/”结果:home或“本地主机:4000/join”结果:join) 但是当我解除对类(class)路由器的评论并搜索“localhost:4000/courses”时,它没有...并抛出结果“无法获取/courses”..

我需要帮助来解决问题...

最佳答案

在您的主路由器中,您将以“/courses”开头的每个请求路由到类(class)路由器,并且类(class)路由器将应答与“/courses”本身匹配的请求,因此您的API端点实际上在“/courses/”下可用培训类”。您可能希望将类(class)路由器中的路径更改为 .get("/" ...

关于javascript - 在学习 NodeJs 时,我遇到了 "cannot get ' 地址“”问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60333511/

相关文章:

javascript - JQuery 查找下一个输入的名称

javascript - img src 在 Firefox 和 IE 的 jQuery 脚本中没有改变

javascript - 将视频带到特定时间的html5视频按钮

javascript - Mongoose :删除子文档内容

search - 搜索所有内容(文章、链接、帖子..)的 joomla 后端搜索功能

javascript - 严格模式下获取当前函数名

Node.js 共享对象或单例以确保单一事实来源

javascript - mongodb中一条一条插入500k记录导致堆内存不足

javascript - 为什么 Node.js 和 Express 的 post 请求失败

JSON仅在后端和前端之间