当我搜索网址时: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;
如您所见,没有“用户详细信息”常量或变量。我找不到这是怎么回事...在您的帮助下,我将不胜感激!
您正在尝试在userController.js中呈现视图userDetail。看来此userDetail视图在您的视图目录中不存在。您已给页面标题指定了“用户详细信息”,这就是它显示错误的原因。
在userController.js中检查此行
export const userDetail = (req, res) => res.render("userDetail", { pageTitle: "User Detail"});