Remote-ftp: Uncaught TypeError: Cannot read property 'length' of undefined

Created on 30 Apr 2016  路  9Comments  路  Source: icetee/remote-ftp

[Enter steps to reproduce below:]

  1. ...
  2. ...

Atom Version: 1.7.3
System: Mac OS X 10.11.4
Thrown From: Remote-FTP package, v0.8.1

Stack Trace

Uncaught TypeError: Cannot read property 'length' of undefined

At buffer.js:554

TypeError: Cannot read property 'length' of undefined
    at Buffer.write (buffer.js:554:13)
    at SFTPStream.stat (/Users/Ingmar/.atom/packages/Remote-FTP/node_modules/ssh2/node_modules/ssh2-streams/lib/sftp.js:1599:7)
    at SFTPWrapper.stat (/Users/Ingmar/.atom/packages/Remote-FTP/node_modules/ssh2/lib/SFTPWrapper.js:87:23)
    at /Users/Ingmar/.atom/packages/Remote-FTP/lib/connectors/sftp.js:154:18
    at state.requests.(anonymous function).cb (/Users/Ingmar/.atom/packages/Remote-FTP/node_modules/ssh2/node_modules/ssh2-streams/lib/sftp.js:1885:16)
    at SFTPStream._transform (/Users/Ingmar/.atom/packages/Remote-FTP/node_modules/ssh2/node_modules/ssh2-streams/lib/sftp.js:387:17)
    at SFTPStream.Transform._read (_stream_transform.js:167:10)
    at SFTPStream._read (/Users/Ingmar/.atom/packages/Remote-FTP/node_modules/ssh2/node_modules/ssh2-streams/lib/sftp.js:170:15)
    at SFTPStream.Transform._write (_stream_transform.js:155:12)
    at doWrite (_stream_writable.js:292:12)
    at writeOrBuffer (_stream_writable.js:278:5)
    at SFTPStream.Writable.write (_stream_writable.js:207:11)
    at Channel.ondata (_stream_readable.js:528:20)
    at emitOne (events.js:77:13)
    at Channel.emit (events.js:169:7)
    at readableAddChunk (_stream_readable.js:146:16)
    at Channel.Readable.push (_stream_readable.js:110:10)
    at SSH2Stream.<anonymous> (/Users/Ingmar/.atom/packages/Remote-FTP/node_modules/ssh2/lib/Channel.js:146:15)
    at emitOne (events.js:77:13)
    at SSH2Stream.emit (events.js:169:7)
    at parsePacket (/Users/Ingmar/.atom/packages/Remote-FTP/node_modules/ssh2/node_modules/ssh2-streams/lib/ssh.js:3163:10)
    at SSH2Stream._transform (/Users/Ingmar/.atom/packages/Remote-FTP/node_modules/ssh2/node_modules/ssh2-streams/lib/ssh.js:551:13)
    at SSH2Stream.Transform._read (_stream_transform.js:167:10)
    at SSH2Stream._read (/Users/Ingmar/.atom/packages/Remote-FTP/node_modules/ssh2/node_modules/ssh2-streams/lib/ssh.js:212:15)
    at SSH2Stream.Transform._write (_stream_transform.js:155:12)
    at doWrite (_stream_writable.js:292:12)
    at writeOrBuffer (_stream_writable.js:278:5)
    at SSH2Stream.Writable.write (_stream_writable.js:207:11)
    at Socket.ondata (_stream_readable.js:528:20)
    at emitOne (events.js:77:13)

Commands

     -1:29.1.0 core:paste (atom-text-editor.editor.is-focused)
     -1:28.7.0 core:move-up (atom-text-editor.editor.is-focused)
     -1:28.4.0 core:move-right (atom-text-editor.editor.is-focused)
  2x -1:28.2.0 core:move-up (atom-text-editor.editor.is-focused)
  2x -1:27 core:select-down (atom-text-editor.editor.is-focused)
     -1:26.6.0 core:backspace (atom-text-editor.editor.is-focused)
     -1:26.4.0 core:save (atom-text-editor.editor.is-focused)
     -1:16.8.0 core:move-down (atom-text-editor.editor.is-focused)
     -1:16.2.0 editor:toggle-line-comments (atom-text-editor.editor.is-focused)
     -1:15.9.0 core:move-down (atom-text-editor.editor.is-focused)
  2x -1:15.5.0 core:select-down (atom-text-editor.editor.is-focused)
     -1:14.8.0 editor:toggle-line-comments (atom-text-editor.editor.is-focused)
     -1:14.5.0 core:save (atom-text-editor.editor.is-focused)
     -1:03.2.0 remote-ftp:disconnect (atom-text-editor.editor.is-focused)
     -0:18.5.0 remote-ftp:sync-with-remote (div.header.list-item)
     -0:13.1.0 remote-ftp:connect (ol.ftptree-view.full-menu.list-tree.has-collapsable-children.focusable-panel)

Config

{
  "core": {}
}

Installed Packages

# User
Remote-FTP, v0.8.1

# Dev
No dev packages

Most helpful comment

The error is located here: https://github.com/icetee/remote-ftp/blob/master/lib/client.js#L525

In my case, self.info.remote was blank (as the stack trace implies) which is why this line fails. However, this method takes in remote as well which is the absolute path to the file you're trying to download, for example: /var/www/test.php.

The fix for users now is to include the remote in the config and set it to / or something else. For the case of fixing the code, there is a check normally that's supposed to fix this issue, but it doesn't seem to happen.

It's odd because the code that I have in the plugin isn't shown here on the repo, at least not in the master branch. The code tries to default remote to / in order to fix this problem, but it doesn't seem to work at all.

Regardless, this code doesn't set self.info.remote if it isn't found either. The code in question I will post here since I don't know what branch it's supposed to be in:

if (self.info.remote) {
    self.root.path = `/${self.info.remote.replace(/^\/+/, '')}`;
} else {
    self.root.path = '/';
}

A simple solution would be to also set the self.info.remote here to prevent situation like this issue to come up.

For those that come upon this error before a fix is provided, just add remote into your config and it should work fine.

All 9 comments

In the newest release there should be a more detailed error message.
Please post the output here.

Update and restart fixed the error for me

I've got this just now with latest everything
[Enter steps to reproduce below:]

  1. load up project
  2. connect to server
  3. try to edit a remote file

Atom Version: 1.8.0
System: Mac OS X 10.11.5
Thrown From: Remote-FTP package, v0.8.3

Stack Trace

Uncaught TypeError: Cannot read property 'length' of undefined

At /Users/bennyp/.atom/packages/Remote-FTP/lib/client.js:347

TypeError: Cannot read property 'length' of undefined
    at Client.module.exports.Client.toLocal (/Users/bennyp/.atom/packages/Remote-FTP/lib/client.js:347:41)
    at ConnectorFTP.module.exports.ConnectorFTP.get (/Users/bennyp/.atom/packages/Remote-FTP/lib/connectors/ftp.js:167:24)
    at Client.<anonymous> (/Users/bennyp/.atom/packages/Remote-FTP/lib/client.js:425:20)
    at Client.module.exports.Client._next (/Users/bennyp/.atom/packages/Remote-FTP/lib/client.js:359:21)
    at Client.module.exports.Client._enqueue (/Users/bennyp/.atom/packages/Remote-FTP/lib/client.js:370:9)
    at Client.<anonymous> (/Users/bennyp/.atom/packages/Remote-FTP/lib/client.js:424:9)
    at Client.module.exports.Client.onceConnected (/Users/bennyp/.atom/packages/Remote-FTP/lib/client.js:167:14)
    at Client.module.exports.Client.download (/Users/bennyp/.atom/packages/Remote-FTP/lib/client.js:423:8)
    at File.module.exports.File.open (/Users/bennyp/.atom/packages/Remote-FTP/lib/file.js:59:10)
    at FileView.module.exports.FileView.open (/Users/bennyp/.atom/packages/Remote-FTP/lib/views/file-view.js:83:13)
    at space-pen-li.<anonymous> (/Users/bennyp/.atom/packages/Remote-FTP/lib/views/file-view.js:72:9)
    at space-pen-li.jQuery.event.dispatch (/Applications/Atom.app/Contents/Resources/app.asar/node_modules/jquery/dist/jquery.js:4435:9)
    at space-pen-li.elemData.handle (/Applications/Atom.app/Contents/Resources/app.asar/node_modules/jquery/dist/jquery.js:4121:28)

Commands

     -0:18.8.0 application:add-project-folder (ul.list-inline.tab-bar.inset-panel)
     -0:12.5.0 remote-ftp:toggle (ul.list-inline.tab-bar.inset-panel)

Config

{
  "core": {
    "disabledPackages": [
      "remote-edit",
      "preview-plus",
      "notebook",
      "font-awesome-snippetset",
      "lines",
      "sort-lines",
      "livereload",
      "recent-projects"
    ],
    "themes": [
      "atom-material-ui",
      "atom-material-syntax-dark"
    ]
  }
}

Installed Packages

# User
Remote-FTP, v0.8.3
angular2-snippets-atom, v0.7.0
angularjs, v0.3.4
angularjs-styleguide-snippets, v0.7.3
atom-material-syntax-dark, v0.2.5
atom-material-ui, v1.2.13
atom-pair, v2.0.10
atom-typescript, v10.0.1
autocomplete-angular-material, v0.4.0
file-icons, v1.7.16
htmlhint, v1.1.4
indent-guide-improved, v1.4.9
jshint, v1.8.5
jsonlint, v1.1.4
less-than-slash, v0.13.0
linter, v1.11.14
linter-php, v1.2.0
linter-stylelint, v2.17.0
minimap, v4.24.7
pigments, v0.31.1
relative-numbers, v0.5.1
sync-settings, v0.7.2
tabs-to-spaces, v1.0.2
terminal-plus, v0.14.5
vim-mode, v0.65.1
vim-surround, v0.8.1
wordpress-api, v1.2.2

# Dev
No dev packages

Hey @jpxd, is there any updates here ? I got the same issue with latest "remote-ftp" and Atom after I try to open a remote file.

Users/marvinheilemann/.atom/packages/Remote-FTP/lib/client.js:348
Hide Stack Trace
TypeError: Cannot read property 'length' of undefined
    at Client.module.exports.Client.toLocal (/Users/marvinheilemann/.atom/packages/Remote-FTP/lib/client.js:348:41)
    at ConnectorFTP.module.exports.ConnectorFTP.get (/Users/marvinheilemann/.atom/packages/Remote-FTP/lib/connectors/ftp.js:169:24)
    at Client.<anonymous> (/Users/marvinheilemann/.atom/packages/Remote-FTP/lib/client.js:426:20)
    at Client.module.exports.Client._next (/Users/marvinheilemann/.atom/packages/Remote-FTP/lib/client.js:360:21)
    at Client.module.exports.Client._enqueue (/Users/marvinheilemann/.atom/packages/Remote-FTP/lib/client.js:371:9)
    at Client.<anonymous> (/Users/marvinheilemann/.atom/packages/Remote-FTP/lib/client.js:425:9)
    at Client.module.exports.Client.onceConnected (/Users/marvinheilemann/.atom/packages/Remote-FTP/lib/client.js:168:14)
    at Client.module.exports.Client.download (/Users/marvinheilemann/.atom/packages/Remote-FTP/lib/client.js:424:8)
    at File.module.exports.File.open (/Users/marvinheilemann/.atom/packages/Remote-FTP/lib/file.js:59:10)
    at FileView.module.exports.FileView.open (/Users/marvinheilemann/.atom/packages/Remote-FTP/lib/views/file-view.js:87:13)
    at space-pen-li.<anonymous> (/Users/marvinheilemann/.atom/packages/Remote-FTP/lib/views/file-view.js:76:9)
    at space-pen-li.jQuery.event.dispatch (/Users/marvinheilemann/.atom/packages/Remote-FTP/node_modules/jquery/dist/jquery.js:4435:9)
    at space-pen-li.elemData.handle (/Users/marvinheilemann/.atom/packages/Remote-FTP/node_modules/jquery/dist/jquery.js:4121:28)

[Enter steps to reproduce:]

  1. ...
  2. ...

Atom: 1.14.1 x64
Electron: 1.3.13
OS: Mac OS X 10.12.2
Thrown From: Remote-FTP package 0.10.5

Stack Trace

Uncaught TypeError: Cannot read property 'length' of undefined

At /Users/Ian/.atom/packages/Remote-FTP/lib/client.js:479

TypeError: Cannot read property 'length' of undefined
    at Client.toLocal (/packages/Remote-FTP/lib/client.js:479:75)
    at ConnectorSFTP.module.exports.ConnectorSFTP.get (/packages/Remote-FTP/lib/connectors/sftp.js:213:27)
    at /packages/Remote-FTP/lib/client.js:551:26)
    at Client._next (/packages/Remote-FTP/lib/client.js:489:43)
    at Client._enqueue (/packages/Remote-FTP/lib/client.js:499:59)
    at /packages/Remote-FTP/lib/client.js:550:14)
    at Client.onceConnected (/packages/Remote-FTP/lib/client.js:237:19)
    at Client.download (/packages/Remote-FTP/lib/client.js:549:12)
    at File.module.exports.File.open (/packages/Remote-FTP/lib/file.js:48:12)
    at FileView.module.exports.FileView.open (/packages/Remote-FTP/lib/views/file-view.js:94:15)
    at /packages/Remote-FTP/lib/views/file-view.js:78:12)
    at /packages/Remote-FTP/node_modules/jquery/dist/jquery.js:4435:9)
    at /packages/Remote-FTP/node_modules/jquery/dist/jquery.js:4121:28)

Commands

     -1:03.5.0 core:confirm (input.hidden-input)

Non-Core Packages

atom-beautify 0.29.17 
atom-clock 0.1.3 
atom-material-syntax 1.0.2 
atom-material-syntax-light 0.4.6 
atom-material-ui 1.3.9 
autoclose-html 0.23.0 
language-javascript-jsx 0.3.7 
monokai 0.20.0 
nuclide 0.201.0 
Remote-FTP 0.10.5 

I am getting the same issue as well, any update on this? I think it is not fixed.

It's definitely not fixed
Atom 1.17.0 x64
Remote-FTP 0.10.7

Same steps: added a project, trying to edit first file

The error is located here: https://github.com/icetee/remote-ftp/blob/master/lib/client.js#L525

In my case, self.info.remote was blank (as the stack trace implies) which is why this line fails. However, this method takes in remote as well which is the absolute path to the file you're trying to download, for example: /var/www/test.php.

The fix for users now is to include the remote in the config and set it to / or something else. For the case of fixing the code, there is a check normally that's supposed to fix this issue, but it doesn't seem to happen.

It's odd because the code that I have in the plugin isn't shown here on the repo, at least not in the master branch. The code tries to default remote to / in order to fix this problem, but it doesn't seem to work at all.

Regardless, this code doesn't set self.info.remote if it isn't found either. The code in question I will post here since I don't know what branch it's supposed to be in:

if (self.info.remote) {
    self.root.path = `/${self.info.remote.replace(/^\/+/, '')}`;
} else {
    self.root.path = '/';
}

A simple solution would be to also set the self.info.remote here to prevent situation like this issue to come up.

For those that come upon this error before a fix is provided, just add remote into your config and it should work fine.

[Enter steps to reproduce:]

  1. Connect to a ftp server
  2. Double click a file

Atom: 1.33.1 x64
Electron: 2.0.16
OS: Windows 8.1
Thrown From: remote-ftp package 2.2.2

Stack Trace

Uncaught TypeError: Cannot read property 'length' of undefined

At C:\Users\Loris\.atom\packages\remote-ftp\lib\client.js:628

TypeError: Cannot read property 'length' of undefined
    at Client.toLocal (/packages/remote-ftp/lib/client.js:628:43)
    at ConnectorFTP._getFile (/packages/remote-ftp/lib/connectors/ftp.js:192:31)
    at /packages/remote-ftp/lib/connectors/ftp.js:530:14
    at /packages/remote-ftp/lib/connectors/ftp.js:185:9
    at Object.cb (/packages/remote-ftp/node_modules/@icetee/ftp/lib/connection.js:368:5)
    at /packages/remote-ftp/node_modules/@icetee/ftp/lib/connection.js:122:20)
    at emitTwo (events.js:131:20)
    at Parser.emit (events.js:214:7)
    at Parser.write (/packages/remote-ftp/node_modules/@icetee/ftp/lib/parser.js:78:12)
    at Socket.ondata (/packages/remote-ftp/node_modules/@icetee/ftp/lib/connection.js:293:20)
    at emitOne (events.js:116:13)
    at Socket.emit (events.js:211:7)
    at addChunk (_stream_readable.js:263:12)
    at readableAddChunk (_stream_readable.js:250:11)
    at Socket.Readable.push (_stream_readable.js:208:10)
    at TCP.onread (net.js:594:20)

Commands

     -0:46.1.0 grammar-selector:show (atom-text-editor.editor.is-focused)
     -0:31.6.0 core:confirm (input.hidden-input)

Non-Core Packages

remote-ftp 2.2.2 
Was this page helpful?
0 / 5 - 0 ratings

Related issues

peterbode1989 picture peterbode1989  路  3Comments

fausto160792 picture fausto160792  路  7Comments

lukecywon picture lukecywon  路  6Comments

AlienFX picture AlienFX  路  6Comments

Darkspirit picture Darkspirit  路  4Comments