读取来自Node JS Server的响应

我正在编写一个程序,在服务器端编译特定的Java文件,如果在编译时出现错误,我将捕获错误信息并将其发送回客户端。 不过,我已经尝试了很多方法来阅读JSON对象,但无济于事。

所以我的问题是为什么我不能读取服务器在客户端发送的错误string? 我目前使用res.data.err来阅读我的错误响应。

服务器端代码

var cmd=require('node-cmd'); exports.compileTest = function(req,res){ console.log(req.body.data.fileName); var file = req.body.data.fileName; var output = ""; output = cmd.get( 'javac solutionTest/'+file, function(err, data, stderr){ if (err) { console.log(err); res.json({ state : 0 ,err}); } else res.json({ state : 1}); } ); } 

客户端代码

  $scope.compileSol = function(){ $http.post('/testRun', { data : { fileName : $scope.solutionFileName.name} }).then(function(res){ if(res.data.state==0){ alert(res.data.err); } }).catch(function(error){ }); } 

以下是我想要发送到networking浏览器的错误

在这里输入图像说明

我想你从你的服务器发送的errvariables是一个JSON对象,对于key: err 。 如果没有,你可以考虑修改它,我下面的方式。

  if (err) { console.log(err); res.json({ state : 0 ,err: err}); } else res.json({ state : 1}); } 

你客户端的对象响应应该和你发送它的方式一样。 从你的服务器发送它的方式,应该是这样你可以访问它的客户端:

 if(res.state==0){ alert(res.err); } }).catch(function(error){ }); 

我的错误在于假设err是服务器输出的确切错误。

解决scheme是将其转换为string,然后发送它。

 var cmd=require('node-cmd'); exports.compileTest = function(req,res){ console.log(req.body.data.fileName); var file = req.body.data.fileName; var output = ""; output = cmd.get( 'javac solutionTest/'+file, function(err, data, stderr){ if (err) { console.log(err); //added this line err = err.toString(); res.json({ state : 0 ,err:err}); } else res.json({ state : 1}); } ); }