[ad_1]
彼は、NextJS/NodeJS プロジェクトで助けが必要です。 エラーが発生しています:
TypeError: Cannot read property '_id' of undefined at currentInstructor (C:\Users\Sammy\Desktop\eLearn\server\controllers\instructor.js:57:30
エラーが実際にどこから発生しているのかを特定できないようです。 みんな、多分私は何かが足りないのです、それを取り出すのに助けが必要です.
私が試したこと:
以下は私のコントローラーインストラクターコードです:
import { LexRuntime } from 'aws-sdk'; import { v4 as uuidv4 } from 'uuid'; import User from '../models/user'; export const currentInstructor = async (res, req) => { try { // 1. Find user from db let user = await User.findById(req.user._id).select('-password').exec(); if (!user.role.includes('Instructor')) { return res.sendStatus(403); } else { res.json({ ok: true }); } } catch (err) { console.log(err); } };
以下は私のルートインストラクターコードです:
import express from 'express'; const router = express.Router(); // Import Middleware import { requireSignin, requireAuth } from '../middlewares'; // Import Controllers import { currentInstructor } from '../controllers/instructor'; router.get('/current-instructor', requireSignin, currentInstructor); module.exports = router;
以下は私のInstructorRouteコードです:
import { useEffect, useState } from 'react'; import axios from 'axios'; import { useRouter } from 'next/router'; import { SyncOutlined } from '@ant-design/icons'; import UserNav from '../nav/UserNav'; const InstructorRoute = ({ children }) => { // State const [ok, setOk] = useState(false); // Router const router = useRouter(); useEffect(() => { fetchInstructor(); }, []); const fetchInstructor = async () => { try { const { data } = await axios.get('/api/current-instructor'); console.log(data); if (data.ok) setOk(true); } catch (err) { console.log(err); setOk(false); router.push('/'); } }; return ( <> {!ok ? ( <SyncOutlined spin className='d-flex justify-content-center display-1 text-primary p-5' /> ) : ( <div className='container-fluid'> <div className='row'> <div className='col-md-2'> <UserNav /> </div> <div className='col-md-10'>{children}</div> </div> </div> )} </> ); }; export default InstructorRoute;
次に、以下のコース作成ページに移動しようとしました。
import axios from 'axios'; import InstructorRoute from '../../../components/routes/InstructorRoute'; const CourseCreate = () => { return ( <InstructorRoute> <h1 className='jumbotron text-center square'>Create Course</h1> </InstructorRoute> ); }; export default CourseCreate;
コースの作成ページに移動しようとするたびに、次のようなエラーが表示されます。
TypeError: Cannot read property '_id' of undefined at currentInstructor (C:\Users\Sammy\Desktop\eLearn\server\controllers\instructor.js:57:30
解決策 1
User.findById(req.user._id) を User.findById(req.auth._id) に変更するだけです
[ad_2]
コメント