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数组的正确方法是什么?
提前致谢
答案 0 :(得分:0)
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。