TypeError:无法读取Nodejs中未定义的属性'split'

我得到以下错误,使用jwt-simple lib:

TypeError: Cannot read property 'split' of undefined at module.exports (C:\my_application\services\mylist.js:5:40) at Layer.handle [as handle_request] (C:\my_application\node_modules\express\lib\router\layer.js:95:5) at next (C:\my_application\node_modules\express\lib\router\route.js:131:13) at Route.dispatch (C:\my_application\node_modules\express\lib\router\route.js:112:3) at Layer.handle [as handle_request] (C:\my_application\node_modules\express\lib\router\layer.js:95:5) at C:\my_application\node_modules\express\lib\router\index.js:277:22 at Function.process_params (C:\my_application\node_modules\express\lib\router\index.js:330:12) at next (C:\my_application\node_modules\express\lib\router\index.js:271:10) at C:\my_application\api.js:39:3 at Layer.handle [as handle_request] (C:\my_application\node_modules\express\lib\router\layer.js:95:5) at trim_prefix (C:\my_application\node_modules\express\lib\router\index.js:312:13) at C:\my_application\node_modules\express\lib\router\index.js:280:7 at Function.process_params (C:\my_application\node_modules\express\lib\router\index.js:330:12) at next (C:\my_application\node_modules\express\lib\router\index.js:271:10) at logger (C:\my_application\node_modules\morgan\index.js:144:5) at Layer.handle [as handle_request] (C:\my_application\node_modules\express\lib\router\layer.js:95:5) 

这里是mylist.js文件:

 var jwt = require('jwt-simple'); module.exports = function (req, res) { var token = req.headers.authorization.split(' ')[1]; var payload = jwt.decode(token, "shhh.."); if(!payload.sub) { res.status(401).send({ message: 'Authentication failed' }); } if(!req.headers.authorization){ return res.status(401).send({ message: 'You are not authorized' }); } res.json(mylist); }; var mylist = [ 'Proj 1', 'Proj 2', 'Proj 3', 'Proj 4' ]; 

我想看看用户是否有权访问前端的mylist资源。
有人有什么主意吗?

你认为这是一个string,即使你不知道是否真的有一个string。 你应该首先添加一些错误检查

 module.exports = function (req, res) { if (typeof req.headers.authorization !== 'string') { res.sendStatus(400); return; } var tokens = req.headers.authorization.split(' '); if (tokens.length < 2) { res.sendStatus(400); return; } var token = tokens[1]; var payload = jwt.decode(token, "shhh.."); if(!payload.sub) { res.status(401).send({ message: 'Authentication failed' }); } ... }; 

编辑:但是,为什么你想第二个令牌,而不是第一个?