[我用哈巴狗构建express.js应用时出现错误

问题描述 投票:0回答:1

当我搜索网址时:http://localhost:3000/users/edit-profile页面返回

错误:无法在视图目录“ C:\ Users \ SuJinKim \ Documents \ WeTube1 \ views”中查找视图“ User Detail”在Function.render(C:\ Users \ SuJinKim \ Documents \ WeTube1 \ node_modules \ express \ lib \ application.js:580:17)在ServerResponse.render(C:\ Users \ SuJinKim \ Documents \ WeTube1 \ node_modules \ express \ lib \ response.js:1012:7)在userDetail(C:\ Users \ SuJinKim \ Documents \ WeTube1 \ controllers / userController.js:5:45)在Layer.handle上[作为handle_request](C:\ Users \ SuJinKim \ Documents \ WeTube1 \ node_modules \ express \ lib \ router \ layer.js:95:5)在下一个(C:\ Users \ SuJinKim \ Documents \ WeTube1 \ node_modules \ express \ lib \ router \ route.js:137:13)在Route.dispatch(C:\ Users \ SuJinKim \ Documents \ WeTube1 \ node_modules \ express \ lib \ router \ route.js:112:3)在Layer.handle上[作为handle_request](C:\ Users \ SuJinKim \ Documents \ WeTube1 \ node_modules \ express \ lib \ router \ layer.js:95:5)在C:\ Users \ SuJinKim \ Documents \ WeTube1 \ node_modules \ express \ lib \ router \ index.js:281:22在参数上(C:\ Users \ SuJinKim \ Documents \ WeTube1 \ node_modules \ express \ lib \ router \ index.js:354:14)在参数上(C:\ Users \ SuJinKim \ Documents \ WeTube1 \ node_modules \ express \ lib \ router \ index.js:365:14)

我以为是因为路由器的顺序,但是..没用

我甚至在我的代码和哈巴狗文件上都没有用户详细信息...

这是我的主要app.js

    import "core-js"
    import express from "express";
    import morgan from "morgan";
    import helmet from "helmet"
    import bodyParser from "body-parser";
    import cookieParser from "cookie-parser";
    import { localsMiddleware } from "./middlewares";
    import globalRouter from "./routers/globalRouter"
    import userRouter from "./routers/userRouter";
    import videoRouter from "./routers/videoRouter"
    import routes from "./routes"
    const app = express();

    app.set("view engine", "pug");
    app.use(helmet());
    app.use(cookieParser());
    app.use(bodyParser.json());
    app.use(bodyParser.urlencoded({ extended: true}));
    app.use(morgan("dev"));
    app.use(localsMiddleware)

    app.use("/", globalRouter);
    app.use(routes.users, userRouter);
    app.use(routes.videos, videoRouter);



    export default app;

这是我的userRouter.js

    import express from "express";
    import routes from "../routes";
    import { userDetail, editProfile, changePassword } from "../controllers/userController";

    const userRouter = express.Router();

    userRouter.get(routes.editProfile, editProfile);
    userRouter.get(routes.changePassword, changePassword);
    userRouter.get(routes.userDetail, userDetail);

    export default userRouter;

这是我的userController.js

    export const join = (req, res) => res.render("join", { pageTitle: "Join"});
    export const login = (req, res) => res.render("login", { pageTitle: "Login"});
    export const logout = (req, res) => res.render("logout", { pageTitle: "Logout"});
    export const userDetail = (req, res) => res.render("userDetail", { pageTitle: "User Detail"});
    export const editProfile = (req, res) => res.render("editProfile", { pageTitle: "Edit Profile"});
    export const changePassword = (req, res) => res.render("changePassword", { pageTitle: "Change 
    Password"}); 

这是我的routes.js


    // Global
    const HOME = "/";
    const JOIN = "/join";
    const LOGIN = "/login";
    const LOGOUT = "/logout";
    const SEARCH = "/search";

    // Users
    const USERS = "/users";
    const USER_DETAIL = "/:id";
    const EDIT_PROFILE = "/edit-profile";
    const CHANGE_PASSWORD = "/change-password";

    // Videos
    const VIDEOS = "/videos";
    const UPLOAD = "/upload"
    const VIDEO_DETAIL = "/:id";
    const EDIT_VIDEO = "/:id/edit"
    const DELETE_VIDEO = "/:id/delete"

    const routes = {
        home: HOME,
        join: JOIN,
        login: LOGIN,
        logout: LOGOUT,
        search: SEARCH,
        users: USERS,
        userDetail: USER_DETAIL,
        editProfile: EDIT_PROFILE,
        changePassword: CHANGE_PASSWORD,
        videos: VIDEOS,
        upload: UPLOAD,
        videoDetail: VIDEO_DETAIL,
        editVideo: EDIT_VIDEO,
        deleteVideo: DELETE_VIDEO
      };

      export default routes;

如您所见,没有“用户详细信息”常量或变量。我找不到这是怎么回事...在您的帮助下,我将不胜感激!

node.js express pug backend
1个回答
0
投票

您正在尝试在userController.js中呈现视图userDetail。看来此userDetail视图在您的视图目录中不存在。您已给页面标题指定了“用户详细信息”,这就是它显示错误的原因。

在userController.js中检查此行

export const userDetail = (req, res) => res.render("userDetail", { pageTitle: "User Detail"});
© www.soinside.com 2019 - 2024. All rights reserved.