javascript / NodeJS - 使用send和get

时间:2018-04-01 15:11:42

标签: javascript node.js post get

id喜欢使用nodejs构建一个sftp客户端应用程序。目前我能够从服务器接收lsEntries并将它们打印到终端。

    var Client = require('ssh2').Client;
var express = require('express');
var app = express();
var cors = require('cors');
app.use(cors);

var connSettings = {
  host: myserver,
  port: 22,
  username: myuser,
  password: passwd
};
var remotePathToList = '/';

var conn = new Client();
conn.on('ready', function(){
  conn.sftp(function(err, sftp){
    if(err) throw err;

    sftp.readdir(remotePathToList, function(err, list){

      if(err) throw err;
      var contents = []
      contents = (list);

      for(var i = 0; i < contents.length; i++){
        console.log(contents[i].filename);
      }

      app.get('/data', function(req, res){
        res.send(contents);
      });
      app.listen(3000);

      //close connection
      conn.end();

    });

  });
}).connect(connSettings);

为了在我的前端接收数据,我有以下的JQuery代码:

   $(document).ready(function(){
    $("button").click(function(){
      $.get('http://localhost:3000/data', {}, function(data){
        var myData = (data);
        console.log(myData.length);
      });
    });
  });

但我没有得到答案。有时我会在很长一段时间后得到ERR_EMPTY_RESPONSE。请注意,我正在使用&#39; cors&#39;防止访问控制允许原因错误。但是,当我在浏览器中键入localhost:3000时,我会将数据打印到屏幕上(JSON)。 从前端访问lsEntry数组的正确方法是什么?

提前致谢

1 个答案:

答案 0 :(得分:0)

啊,我解决了这个问题。使用cors并不起作用,但我找到了一个解决方案,允许cors with express:

app.use(function(req, res, next) {
  res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, 
  Content-Type, Accept");
  next();
});

取代

var cors = require('cors');
app.use(cors);

并且有效。我不知道为什么npm包没有用,但我找到了解决方案here