无法读取 Node Js 中未定义的属性(读取“startsWith”)类型错误

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

我是一个新学习者,我在中间件中面临这个问题,之前一切都工作正常,但在我请求之后,就会出现此错误,我只是尝试控制台记录标头中给出的令牌或在令牌上应用条件

这是确切的错误 ->

(node:14020) [MONGODB DRIVER] Warning: useNewUrlParser is a deprecated option: useNewUrlParser has no effect since 
Node.js Driver version 4.0.0 and will be removed in the next major version
(Use `node --trace-warnings ...` to show where the warning was created)
(node:14020) [MONGODB DRIVER] Warning: useUnifiedTopology is a deprecated option: useUnifiedTopology has no effect 
since Node.js Driver version 4.0.0 and will be removed in the next major version
listening on port: 4000
Connected to MongoDB Server

F:\Projects\SOCIAL-MEDIA\server\middlewares\requireUser.js:3
    if(!req.headers || !req.headers.authorization || !req.header.authorization.startsWith('Bearer')){
                                                                               ^

TypeError: Cannot read properties of undefined (reading 'startsWith')
    at module.exports (F:\Projects\SOCIAL-MEDIA\server\middlewares\requireUser.js:3:80)
    at Layer.handle [as handle_request] (F:\Projects\SOCIAL-MEDIA\server\node_modules\express\lib\router\layer.js:95:5)
    at next (F:\Projects\SOCIAL-MEDIA\server\node_modules\express\lib\router\route.js:149:13)
    at Route.dispatch (F:\Projects\SOCIAL-MEDIA\server\node_modules\express\lib\router\route.js:119:3)
    at Layer.handle [as handle_request] (F:\Projects\SOCIAL-MEDIA\server\node_modules\express\lib\router\layer.js:95:5)
    at F:\Projects\SOCIAL-MEDIA\server\node_modules\express\lib\router\index.js:284:15
    at Function.process_params (F:\Projects\SOCIAL-MEDIA\server\node_modules\express\lib\router\index.js:346:12)   
    at next (F:\Projects\SOCIAL-MEDIA\server\node_modules\express\lib\router\index.js:280:10)
    at Function.handle (F:\Projects\SOCIAL-MEDIA\server\node_modules\express\lib\router\index.js:175:3)
    at router (F:\Projects\SOCIAL-MEDIA\server\node_modules\express\lib\router\index.js:47:12)

并且我的失眠预览出现错误:从对等方接收数据时失败 这是名为 requireUser.js 的中间件文件的代码

module.exports =async(req,res,next)=>{
    if(!req.headers || !req.headers.authorization || !req.header.authorization.startsWith('Bearer')){
        return res.status(401).send("Authorization Is Required");
    }
    let accessToken= req.headers.authorization.split(" ")(1);
    console.log(accessToken);
    next();
}

我只是想控制台记录标头中给出的令牌或在令牌上应用条件

node.js express middleware mern
1个回答
0
投票

最后一个条件有错字:

header
应该是
headers

if(
    !req.headers || 
    !req.headers.authorization || 
    !req.headers.authorization.startsWith('Bearer')
){
© www.soinside.com 2019 - 2024. All rights reserved.