【问题标题】:Can you use the node package ssh2 in a browser?你可以在浏览器中使用节点包 ssh2 吗?
【发布时间】:2017-08-05 14:37:17
【问题描述】:

我正在我的浏览器中为学校构建一个 SFTP 客户端。我正在使用节点包 ssh2 并且能够让我的代码在终端中工作。我可以使用代码连接和读取该服务器中的目录和文件。但是,我无法通过浏览器中的 HTML 部分执行代码。我收到错误“不支持绑定”。 我正在使用角度和浏览器。因为 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>

【问题讨论】:

    标签: javascript angularjs node.js


    【解决方案1】:

    没有。

    您不能使用 ssh2,因为它使用本机代码并且不能在浏览器中运行。它只能从 node.js 运行。

    最好的办法是使用可以通过 websocket 代理 ssh 的东西。

    【讨论】:

    • 我们可以在 CRA 中使用 express 运行 nodejs 而不弹出吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-04
    • 1970-01-01
    • 2015-07-30
    • 2013-04-09
    • 2018-03-06
    相关资源
    最近更新 更多