I'm new to Angular/Node and cannot seem to figure out a problem I'm having.
I'm trying to connect to an ftp using client-ftp and am having trouble with the implementation. Essentially I'm creating a button on the front end like this:
<button class="btn btn-primary" (click)="downloadFile()"><i class="fa fa-file-photo-o"></i> Download Screenshot</button>
And implementing trying to implement it via a click event like this:
downloadFile(){
console.log('Connecting to sftp...');
var ftpClient = require('ftp-client'),
config = {
host: 'localhost',
port: 22,
user: 'anonymous',
password: 'anonymous'
},
options = {
logging: 'basic'
},
client = new ftpClient(config, options);
console.log('Downloading Screenshot...');
client.connect(function () {
client.download('/sftFilepPath', './Downloads', {
overwrite: 'none'
}, function (result) {
console.log(result);
});
});
}
I keep getting an error, however saying: TypeError: Socket is not a constructor
whenever the button is pressed. I'm getting both of my console.log() calls to show in the debugger so I assume it has to do with where I'm trying to actually connect and download.
I tried calling import for the FtpClient namespace and making a private client parameter in the constructor and working off of that, but that doesn't seem to work either.
I know a constructor is implicitly called by the new keyword, but I don't reference 'Socket' anywhere in my code. Maybe I'm missing something?
Here is my imports and constructor for reference:
import { Component, ElementRef, Input, OnInit, OnDestroy } from '@angular/core';
import { TestInstance, Test, TestDetails } from '../../objModules/index';
import { RunServices } from './run.services';
import { Observable } from 'rxjs/Rx';
import * as $ from 'jquery';
import * as _ from 'underscore';
import { ModalController } from './run.modal.controller';
// import { FtpClient } from 'ftp-client';
@Component({
templateUrl: './run.modal.component.html',
moduleId: module.id.toString(),
selector: 'app-test-data',
providers: [ RunServices ]
})
export class ModalComponent implements OnInit, OnDestroy {
testInstance: TestDetails;
id: string;
private element: JQuery;
private runId: string;
private test$: Observable<Test>;
private testHistory$: Observable<TestInstance[]>;
private test: Test;
private testHistory: TestInstance[];
private selectedTest: TestInstance;
private latestRuns: TestInstance[];
private averagePass: number;
private averageFail: number;
services: RunServices;
constructor(private modalController: ModalController, private el: ElementRef, private runServices: RunServices) {
this.element = $(el.nativeElement);
this.services = runServices;
// Initialize these objects so we don't get any errors
this.test = new Test(' ', ' ', ' ', [' '], ' ', ' ');
this.testHistory = new Array<TestInstance>(new TestInstance(' ', ' ', ' ', 0, ' ', ' ', ' ', ' ', ' '));
this.testInstance = new TestDetails(' ', ' ', ' ', ' ', ' ', ' ', ' ', 0, null, ' ');
this.selectedTest = new TestInstance(' ', ' ', ' ', 0, ' ', ' ', ' ', ' ', ' ');
}