hyperdrive
hyperdrive copied to clipboard
Checkout TypeError: Cannot read property 'download' of null
I am reporting:
- [x] a bug or unexpected behavior
- [ ] general feedback
- [ ] feature request
- [ ] security issue
Bug Report
Please give us details about your installation to assist you. Run dat -v
to see the version of Dat you are using.
- Operating system: Debian GNU/Linux 9 (stretch) 64-bit
- Node Version: v8.7.0
- dat-node Version: 3.5.12
Expected behavior
I have a gist (https://gist.github.com/mistersdevelopment/4dcb5d98efbe3f48233d08bc0254c7be) that generates a Dat server/client pair. The server Dat has one file making its version 1. The client Dat's archive performs a checkout of the server at version 1. I expect the client Dat's archive to now be a read only copy of the server at version 1.
Actual behavior
As the logs below show the checkout operation fails with "TypeError: Cannot read property 'download' of null".
Debug Logs
DEBUG=dat* node dat-checkout.js
dat-node archive ready. version: 0 +0ms
dat-node importFiles() { watch: true,
dereference: true,
count: true,
indexing: true,
ignore: [Function: ignore] } +0ms
dat-node IMPORT ignore: / +63ms
dat-node IMPORT ignore: /.dat +1ms
dat-node IMPORT ignore: /.dat/content.bitfield +3ms
dat-node IMPORT ignore: /.dat/content.key +0ms
dat-node IMPORT ignore: /.dat/content.signatures +1ms
dat-node IMPORT ignore: /.dat/content.tree +0ms
dat-node IMPORT ignore: /.dat/metadata.bitfield +0ms
dat-node IMPORT ignore: /.dat/metadata.data +0ms
dat-node IMPORT ignore: /.dat/metadata.key +0ms
dat-node IMPORT ignore: /.dat/metadata.ogd +1ms
dat-node IMPORT ignore: /.dat/metadata.signatures +0ms
dat-node IMPORT ignore: /.dat/metadata.tree +0ms
dat-node IMPORT put: /test-0.txt +1ms
dat-server - {
"files": 1,
"byteLength": 13,
"length": 1,
"version": 1
}
dat-node IMPORT ignore: /.dat/content.signatures +16ms
dat-node IMPORT ignore: /.dat/content.tree +0ms
dat-node IMPORT ignore: /.dat/content.bitfield +0ms
dat-node IMPORT ignore: /.dat/metadata.data +1ms
dat-node IMPORT ignore: /.dat/metadata.signatures +0ms
dat-node IMPORT ignore: /.dat/metadata.tree +0ms
dat-node IMPORT ignore: /.dat/metadata.bitfield +0ms
Created Dat "d752e62e7447ffc324afbaaf593e38fe9a89e8b8bdb866cf913dcb72adc5d3db" with storage "dat-server".
dat-node archive ready. version: 0 +8s
dat-node Stream close +0ms
dat-node Stream close +1ms
dat-client - undefined
dat-client - {
"files": 1,
"byteLength": 13,
"length": 1,
"version": 1,
"downloaded": 0
}
dat-client - undefined
dat-network Downloaded data: 109 +0ms
dat-network Uploaded data: 109 +95ms
dat-network Downloaded data: 109 +405ms
dat-network Uploaded data: 109 +95ms
dat-network Downloaded data: 109 +406ms
dat-network Uploaded data: 109 +95ms
dat-network Downloaded data: 109 +406ms
dat-network Uploaded data: 109 +95ms
dat-network Downloaded data: 109 +405ms
dat-network Uploaded data: 109 +96ms
dat-network Downloaded data: 109 +405ms
dat-network Uploaded data: 109 +95ms
dat-network Downloaded data: 109 +406ms
dat-network Uploaded data: 109 +96ms
dat-network Downloaded data: 109 +404ms
dat-network Uploaded data: 109 +97ms
dat-network Downloaded data: 109 +404ms
dat-network Uploaded data: 109 +97ms
dat-network Downloaded data: 109 +404ms
dat-node Stream close +5s
dat-node Stream close +8ms
dat-network Uploaded data: 109 +97ms
dat-network Downloaded data: 109 +404ms
dat-network Uploaded data: 109 +97ms
dat-network Downloaded data: 109 +404ms
dat-network Uploaded data: 109 +97ms
dat-network Downloaded data: 109 +404ms
dat-network Uploaded data: 109 +97ms
dat-network Downloaded data: 109 +404ms
dat-network Uploaded data: 109 +97ms
dat-network Downloaded data: 109 +404ms
dat-network Uploaded data: 109 +97ms
dat-network Downloaded data: 109 +403ms
dat-network Uploaded data: 109 +98ms
dat-network Downloaded data: 109 +403ms
dat-network Uploaded data: 109 +98ms
dat-network Downloaded data: 109 +402ms
Created Dat "d752e62e7447ffc324afbaaf593e38fe9a89e8b8bdb866cf913dcb72adc5d3db" with storage "dat-client".
dat-checkout/node_modules/hyperdrive/index.js:368
self.content.download({start, end}, function () {
^
TypeError: Cannot read property 'download' of null
at downloadFile (dat-checkout/node_modules/hyperdrive/index.js:368:18)
at dat-checkout/node_modules/hyperdrive/index.js:345:33
at dat-checkout/node_modules/hyperdrive/index.js:701:5
at Tree._get (dat-checkout/node_modules/append-tree/index.js:299:12)
at dat-checkout/node_modules/append-tree/index.js:164:10
at _combinedTickCallback (internal/process/next_tick.js:141:11)
at process._tickCallback (internal/process/next_tick.js:180:9)
After talking with @joehand it looks like the issue is that I wasn't waiting for the 'content' event to be emitted from the archive. The README.md might need to be updated to reflect this. The documentation shows calling archive.checkout(version).download()
as the way to download a checked out archive but given the errors I encountered this is not correct.
Were you able to resolve this @mistersdevelopment? If so, would you mind sharing your code so the documentation could be updated?
I'm struggling with the version downloads atm too.
Hey @chartgerink, I believe waiting for the content event (https://github.com/mafintosh/hyperdrive/blob/master/index.js#L127) helped but I can't find any documentation of that in the test scripts I kept around so I don't have any code to share. Sorry about that.