首页 > 解决方案 > 使用 pug 构建 express.js 应用程序时出错

问题描述

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

错误:无法在 Function.render 的视图目录“C:\Users\SuJinKim\Documents\WeTube1\views”中查找视图“用户详细信息”(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 [as 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 [as 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;

如您所见,没有“用户详细信息”常量或变量。我找不到它有什么问题......如果你的帮助我真的很感激!

这是视图文件夹中的哈巴狗文件..在视图中有changePassword.pug, deleteVieo.pug, editProfile.pug, home.pug, join.pug, login.pug, logout.pug, search.pug, upload.pug, userDetail.pug, videoDetail.pug.

标签: javascriptnode.jsexpresspug

解决方案


推荐阅读