当前位置: 首页 > 知识库问答 >
问题:

在研究NodeJ时,我遇到了“无法获得‘地址’”的问题

卜瀚漠
2023-03-14

在研究Nodejs时,我遇到了“无法获得‘地址’”的问题,我几天前开始研究Nodejs。

我试着使我的本地服务器,并按其用法划分文件。

在我的节点项目中,有

1.索引(主文件)2.路由3.路由器文件夹(包括全局路由器、课程路由器...等)4.控制器文件夹(包括全局控制器、课程路由器...等)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;

这是我的globalController


    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");

我的课程路由器


    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;

我的CourseController


    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;

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

当我单独测试全局路由器时,它工作((ex)“localhost:4000/”结果:home或“localhost:4000/join”结果:join)但当我解除对courses router的注释并搜索“localhost:4000/courses”时,它却没有...并抛出结果“cannot get/courses”..

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

共有1个答案

白星腾
2023-03-14

在您的主路由器中,您将每个以“/courses”开头的请求路由到courses路由器,而courses路由器将回答与“/courses”本身匹配的请求,因此您的API端点实际上在“/courses/courses”下可用。您可能希望将课程路由器中的路径更改为。获取(“/”...

 类似资料:
  • 编辑:我刚刚意识到,即使是一个带有应用程序条的简单屏幕,也会发生这种情况 错误:任务“:app:checkdebugaarmadata”的执行失败 无法解析配置“:app:debugRuntimeClasspath”的所有文件。无法解析com。谷歌。firebase:firebase firestore:22.1.2。所需人员:项目:应用程序 无法解析com。谷歌。firebase:firebas

  • 7.2. 个案研究:街道地址 这一系列的例子是由我几年前日常工作中的现实问题启发而来的,当时我需要从一个老化系统中导出街道地址,在将他们导入新的系统之前,进行清理和标准化。(看,我不是只将这些东西堆到一起,他有实际的用处)。这个例子展示我如何处理这个问题。 例 7.1. 在字符串的结尾匹配 >>> s = '100 NORTH MAIN ROAD' >>> s.replace('ROAD', '

  • 我试图用java制作一个项目,但MySQL有问题,在尝试获取表中的内容后,我收到以下错误消息: JAVAsql。SQLSyntaxErrorException:您的SQL语法有错误;查看与您的MariaDB服务器版本对应的手册,了解第1行“table”附近使用的正确语法

  • 问题内容: 当我编译这段代码时,编译器告诉我我 不能使用str(s)的地址 。 所以我的问题是 类型转换 是否会寻找新地址来定位当前的new ,还是我没有想到的其他东西? 问题答案: Go编程语言规范 表达方式 表达式通过将运算符和函数应用于操作数来指定值的计算。 转换次数 转换是形式为T(x)的表达式,其中T是类型,x是可以转换为类型T的表达式。 地址运算符 对于类型T的操作数x,地址操作&x生

  • 我的合并排序算法无法正常工作。代码在下面,但是我简单总结一下我试过的,我知道的代码没有错的地方。 函数将指向数组的指针和数组的大小作为参数。如果数组的大小小于2,它会立即返回。我确信这是有效的,因为我调试了这部分几次。它返回了8次,这是我期望它做的。接下来,创建一个变量作为索引来拆分数组。我测试了它,我很有信心在所有递归中都是正确的。然后,创建两个数组,第一个数组包含索引…中的元素,第二个数组包含

  • 下面是我在创建表时得到的错误。错误:无法从动物园管理员那里获得主地址;znode数据==null(图像)