获取“ProgressEvent”,而不是在Angular + NodeJS中响应json

这是我的message.service中的get函数

message.service.ts

addMessage(message: Message) { const body = JSON.stringify(message); const headers = new Headers({ 'Content-Type': 'application/json' }); return this.http.post('http://localhost:3000/messages', body, { headers: headers }) .map((response: Response) => { const result = response.json(); const message = new Message(result.obj.title, result.obj.content, 'Dummy', result.obj._id, null); this.messages.push(message); return message; }) .catch((error: Response) => Observable.throw(error.json())); } 

这是在我的后端。 如果用户没有login。 它会返回一个错误(未经授权)。

路线/ messages.js

 router.use('/', (req, res, next) => { jwt.verify(req.query.token, 'secret', (err, decoded) => { if (err) { return res.status(401).json({ title: 'Not Authenticated', error: err }); } next(); }); }); 

有些post说它和CORS有关。 但是我也有这个在后台。

app.js

 app.use((req, res, next) => { res.setHeader('Access-Control-Allow-Origin', '*'); res.setHeader('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept'); res.setHeader('Access-Control-Allow-Methods', 'POST, GET, PATCH, DELETE, OPTIONS'); next(); }); app.use('/messages', messageRoutes); app.use('/users', userRoutes); app.use('/api', appRoutes); 

这是在我的组件。

消息input.component.ts

 this.messageService.addMessage(message) .subscribe( data => this.snackBar.open('Your message is added!', 'Success!', {duration: 3000, extraClasses: ['success-snackbar']}), error => console.error(error) ); 

当由于授权而出现错误时。 错误不是我从后端返回的错误。 相反,这是“进步事件”

 ProgressEvent {isTrusted: true, lengthComputable: false, loaded: 0, total: 0, type: "error", …} 

我想知道如何从JSON格式的后端显示错误。 应该显示给我的控制台日志的错误。