你能在浏览器中使用节点包ssh2吗?

时间:2017-03-15 02:05:44

标签: javascript angularjs node.js

我正在浏览器中为学校建立一个SFTP客户端。我正在使用节点包ssh2,并且能够让我的代码在终端中工作。我可以使用代码连接和读取该服务器中的目录和文件。但是,我无法通过浏览器中的HTML部分执行代码。我收到错误"不支持绑定"。 我正在使用angular和browserify。因为ssh2包是服务器端的,所以我不得不使用browserify以便"要求"它位于我需要的JavaScript文件的顶部。 有没有人在他们的浏览器中使用过ssh2包?我认为绑定错误消息告诉我这个包只能在终端中工作,但我想确定。这是我的代码......

控制器:



"use strict";

module.exports = function($scope) {

	$scope.connect = function(){
		let Client = require('../../lib/node_modules/ssh2-sftp-client');
		let sftp = new Client();
		sftp.connect({
		    host: 'test.rebex.net',
		    port: '22',
		    username: 'user',
		    password: 'password'
		}).then(() => {
			var remoteServerFolders = sftp.list('/');
			console.log("remoteServerFolders", remoteServerFolders);
		    return remoteServerFolders;
		}).then((data) => {
		    console.log('the data info', data);
		    sftp.end();
		}).catch((err) => {
		    console.log('catch error', err);
		});
	};
};




app.js:



"use strict";

let angular = require("../lib/node_modules/angular/");
let app = angular.module("SftpApp", ['ngRoute']);

require("../lib/node_modules/angular-route/angular-route.min.js");

require("./factories/");
require("./controllers/");

app.config(function($routeProvider){
	$routeProvider.
	when('/', {
		templateUrl: 'partials/connect.html',
		controller:"ConnectingCtrl"
	});
});




HTML:



<h1>Connect to an SFTP server</h1>

<div ng-controller="ConnectingCtrl">
	<button type="button" class="btn btn-default" ng-click="connect()">Connect</button>
</div>
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:0)

没有

您不能使用ssh2,因为它使用本机代码,无法在浏览器中运行。它必须仅从node.js运行。

您最好的选择是使用可以代替ssh over websocket的东西。