javascript - 为什么 Node js res.send 不起作用?

标签 javascript angularjs node.js express

我在后端使用 Node ,在前端使用 Angular 。我正在检查 Nodejs 中是否存在文件并将响应发送到 Angular。这似乎不起作用。我是初学者,在在这里问这个问题之前我已经进行了广泛的搜索。质量不好请见谅。

Node js代码:

router.get('/api/checkstate', function(req, res) {
    //fs.readFileSync(req.query.resource, 'UTF-8');
      fs.stat('/Users/abhishek/message.txt', function(err, stat) {
    if(err == null) {
        res.send('Found');
    } else if(err.code == 'ENOENT') {
        res.send('Not found');
    } else {
        console.log('Some other error: ', err.code);
    }
  });
   //res.send('OK');
});

Angular 代码:

$scope.checkstate = function(){
        $http.get('/api/checkstate',function(data){
          if(data === 'Found'){
            $scope.button = "Unpause";
            console.log('Hello!!!');
          }
          else{
            $scope.button = "Pause";
          }
        });
      };

html:

<button ng-init="checkstate()" class="btn btn-primary toggle-btn" ng-click="togglefunc()" style="margin-top: -1200px;
  margin-left: 1000px;">{{button}}</button>

最佳答案

您似乎只在特定错误场景中处理响应 - 您需要确保结束所有场景的请求,否则客户端将等待响应无限期地(或直到请求最终超时)。

此外,鉴于这应该是一个 API,我建议您返回适当的状态代码而不是简单的消息

fs.stat('/Users/abhishek/message.txt', function(err, stat) {
    if (err && err.code === 'ENOENT') { 
        res.status = 404; // file does not exist
    } else if (err) { 
        console.log('Some other error: ', err.code);
        res.status = 500; // unknown error occurred
    } else { 
        res.status = 204; // file was found
    }
    res.end();
});

然后在客户端上,您可以利用 Angular 提供的成功/错误回调,而不必检查返回的消息。

$http.get('/api/checkstate').
    success(function(data, status, headers, config){
        $scope.button = "Unpause"; 
        console.log('File Found!');
    }).
    error(function(data, status, headers, config) {
        if (status === 404) {
            console.log('File Not Found!');
        } else {
            console.log('Other Error!');
        }
        $scope.button = "Pause";
    });

关于javascript - 为什么 Node js res.send 不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30597158/

相关文章:

javascript - focus() 在 IE 9 中有效,但在 chrome、firefox 中无效

javascript - Angular js 将更改的值推送到数组中

node.js - Nodejs : Detect file type without extension

javascript - 如何在不改变状态的情况下操作传递给函数的对象的属性

javascript - 在 onload 函数中设置 Canvas 背景不起作用

javascript - 全日历中的多个资源列

javascript - 自执行函数的奇怪之处

angularjs - 重复表达式中的 Angular ng-repeat 别名?

javascript - 迭代 json 并找到特定的键

javascript - 如何使 2 个 Javascript 变量始终彼此相等?