在研究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”..
我需要帮助来解决问题...
在您的主路由器中,您将每个以“/courses”开头的请求路由到courses路由器,而courses路由器将回答与“/courses”本身匹配的请求,因此您的API端点实际上在“/courses/courses”下可用。您可能希望将课程路由器中的路径更改为。获取(“/”
...