Unable to download host OS images with balena CLI

Good day,

As the title suggests I am currently unable to download a host OS image via the CLI due to the following error:

(cv) tarek@sonah-dell-ubnt:~$ balena --version
Debug: original argv0="node" argv=[/home/tarek/.nvm/versions/node/v12.5.0/bin/node,/home/tarek/.nvm/versions/node/v12.5.0/bin/balena,--version] length=3
Debug: new argv=[/home/tarek/.nvm/versions/node/v12.5.0/bin/node,/home/tarek/.nvm/versions/node/v12.5.0/bin/balena,version] length=3
11.7.3
(cv) tarek@sonah-dell-ubnt:~$ balena os download raspberrypi3 -o ./balena.img --version latest
Debug: original argv0="node" argv=[/home/tarek/.nvm/versions/node/v12.5.0/bin/node,/home/tarek/.nvm/versions/node/v12.5.0/bin/balena,os,download,raspberrypi3,-o,./balena.img,--version,latest] length=9
ReferenceError: primordials is not defined
    at fs.js:27:26
    at req_ (/home/tarek/.nvm/versions/node/v12.5.0/lib/node_modules/balena-cli/node_modules/natives/index.js:143:24)
    at Object.req [as require] (/home/tarek/.nvm/versions/node/v12.5.0/lib/node_modules/balena-cli/node_modules/natives/index.js:55:10)
    at Object.<anonymous> (/home/tarek/.nvm/versions/node/v12.5.0/lib/node_modules/balena-cli/node_modules/unzip2/node_modules/graceful-fs/fs.js:1:37)
    at Module._compile (internal/modules/cjs/loader.js:776:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:787:10)
    at Module.load (internal/modules/cjs/loader.js:643:32)
    at Function.Module._load (internal/modules/cjs/loader.js:556:12)
    at Function._load (/home/tarek/.nvm/versions/node/v12.5.0/lib/node_modules/balena-cli/node_modules/raven/lib/instrumentation/instrumentor.js:34:35)
    at Module.require (internal/modules/cjs/loader.js:683:19)
    at require (internal/modules/cjs/helpers.js:16:16)
    at Object.<anonymous> (/home/tarek/.nvm/versions/node/v12.5.0/lib/node_modules/balena-cli/node_modules/unzip2/node_modules/graceful-fs/graceful-fs.js:3:27)
    at Module._compile (internal/modules/cjs/loader.js:776:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:787:10)
    at Module.load (internal/modules/cjs/loader.js:643:32)
    at Function.Module._load (internal/modules/cjs/loader.js:556:12)
    at Function._load (/home/tarek/.nvm/versions/node/v12.5.0/lib/node_modules/balena-cli/node_modules/raven/lib/instrumentation/instrumentor.js:34:35)
    at Module.require (internal/modules/cjs/loader.js:683:19)
    at require (internal/modules/cjs/helpers.js:16:16)
    at Object.<anonymous> (/home/tarek/.nvm/versions/node/v12.5.0/lib/node_modules/balena-cli/node_modules/unzip2/node_modules/fstream/lib/reader.js:4:10)
    at Module._compile (internal/modules/cjs/loader.js:776:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:787:10)
    at Module.load (internal/modules/cjs/loader.js:643:32)
    at Function.Module._load (internal/modules/cjs/loader.js:556:12)
    at Function._load (/home/tarek/.nvm/versions/node/v12.5.0/lib/node_modules/balena-cli/node_modules/raven/lib/instrumentation/instrumentor.js:34:35)
    at Module.require (internal/modules/cjs/loader.js:683:19)
    at require (internal/modules/cjs/helpers.js:16:16)
    at Object.<anonymous> (/home/tarek/.nvm/versions/node/v12.5.0/lib/node_modules/balena-cli/node_modules/unzip2/node_modules/fstream/fstream.js:2:18)
    at Module._compile (internal/modules/cjs/loader.js:776:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:787:10)
    at Module.load (internal/modules/cjs/loader.js:643:32)
    at Function.Module._load (internal/modules/cjs/loader.js:556:12)
    at Function._load (/home/tarek/.nvm/versions/node/v12.5.0/lib/node_modules/balena-cli/node_modules/raven/lib/instrumentation/instrumentor.js:34:35)
    at Module.require (internal/modules/cjs/loader.js:683:19)
    at require (internal/modules/cjs/helpers.js:16:16)
    at Object.<anonymous> (/home/tarek/.nvm/versions/node/v12.5.0/lib/node_modules/balena-cli/node_modules/unzip2/lib/extract.js:6:14)
    at Module._compile (internal/modules/cjs/loader.js:776:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:787:10)
    at Module.load (internal/modules/cjs/loader.js:643:32)
    at Function.Module._load (internal/modules/cjs/loader.js:556:12)
    at Function._load (/home/tarek/.nvm/versions/node/v12.5.0/lib/node_modules/balena-cli/node_modules/raven/lib/instrumentation/instrumentor.js:34:35)
    at Module.require (internal/modules/cjs/loader.js:683:19)
    at require (internal/modules/cjs/helpers.js:16:16)
    at Object.<anonymous> (/home/tarek/.nvm/versions/node/v12.5.0/lib/node_modules/balena-cli/node_modules/unzip2/unzip.js:4:19)
    at Module._compile (internal/modules/cjs/loader.js:776:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:787:10)
    at Module.load (internal/modules/cjs/loader.js:643:32)
    at Function.Module._load (internal/modules/cjs/loader.js:556:12)
    at Function._load (/home/tarek/.nvm/versions/node/v12.5.0/lib/node_modules/balena-cli/node_modules/raven/lib/instrumentation/instrumentor.js:34:35)
    at Module.require (internal/modules/cjs/loader.js:683:19)
    at require (internal/modules/cjs/helpers.js:16:16)
    at Command.action (/home/tarek/.nvm/versions/node/v12.5.0/lib/node_modules/balena-cli/build/actions/os.js:97:13)
    at /home/tarek/.nvm/versions/node/v12.5.0/lib/node_modules/balena-cli/node_modules/capitano/build/command.js:98:37
    at runNextTicks (internal/process/task_queues.js:55:5)
    at processImmediate (internal/timers.js:412:9)
    at process.topLevelDomainCallback (domain.js:126:23)

If you need help, don't hesitate in contacting our support forums at
https://forums.balena.io

For bug reports or feature requests, have a look at the GitHub issues or
create a new one at: https://github.com/balena-io/balena-cli/issues/

(node:25598) [DEP0066] DeprecationWarning: OutgoingMessage.prototype._headers is deprecated

Afterwards I thought of using a lower nodeJS version, so I tried with v8 and it seems to work:

(cv) tarek@sonah-dell-ubnt:~$ balena --version
Debug: original argv0="node" argv=[/home/tarek/.nvm/versions/node/v8.16.0/bin/node,/home/tarek/.nvm/versions/node/v8.16.0/bin/balena,--version] length=3
Debug: new argv=[/home/tarek/.nvm/versions/node/v8.16.0/bin/node,/home/tarek/.nvm/versions/node/v8.16.0/bin/balena,version] length=3
11.7.3
(cv) tarek@sonah-dell-ubnt:~$ balena os download raspberrypi3 -o ./balena.img --version latest
Debug: original argv0="node" argv=[/home/tarek/.nvm/versions/node/v8.16.0/bin/node,/home/tarek/.nvm/versions/node/v8.16.0/bin/balena,os,download,raspberrypi3,-o,./balena.img,--version,latest] length=9
Getting device operating system for raspberrypi3
^C

So using this as the current workaround. The download of OS images is embedded into our flashing workflow though and not necessarily all users are aware of their nodeJS version.

I’ve submitted an issue here: https://github.com/balena-io/balena-cli/issues/1373

@Tschebbischeff I just tried it and v11.15.0 works, while trying with v12.6.0 I have the same issue as you.

Thanks for opening the issue, we are looking into it!

1 Like

@Tschebbischeff we have added a change to the CLI that should fix this issue. If you have a chance to give the latest CLI (v11.7.4), would love to hear whether it fixes the issue for you on Node 12. Thanks!

Thank you @imrehg, it works flawlessly :smile:

We’re glad to hear it’s fixed!