September 17, 2015 4:05 pm

Update on Node.js for Windows 10 IoT

Post written by Arunesh Chandra, Sr. Program Manager and Gaurav Seth, Principal Program Manager Lead on Chakra

Ever since we announced our preview of Node.js support for Windows 10 IoT Core a few months back, we have been working to enable new scenarios and improve its ease of use.  Here is what is new:

  1. Making it easier to get started

    Between studying the pin diagram to understand how to wire sensors on the board to getting the right bits on the device, the workflow of an IoT developer is already non-trivial, and the current experience of getting started with Windows 10 IoT using Node.js Chakra was a “high friction” process. Developers had to discover and install NTVS, NTVS IoT extension, and in some cases manually build Node.exe to work with Chakra etc.

    In order to improve this acquisition experience, we announce the availability of a bundle installer for Node.js tools for Windows IoT. This installs all the correct versions of the essential tools and also installs Node.exe, which works with Chakra. This installation works side by side in an existing default Node.js installation without disrupting it. The installer also creates the correct folder layout necessary to make node-gyp dependent node modules work without using any workarounds.

    1_nodeJsInstaller

    Please check out these steps which have links to detailed instructions on how to get started with your own Raspberry Pi 2 or other supported IoT device.

  2. Support for cylon, serialport and firmata

    We are committed to improving the compatibility of Node.js support on Windows IoT with npm modules. We started with popular modules for IoT scenarios. While this is a work in progress, we are happy to share that serialport, cylon and firmata are now fully supported.

    With this release we have also added a cylon project template and have a sample using serialport, cylon and firmata to help you get started with them. We have submitted a pull request (PR) on serialport to have it work by default on Node.js with Chakra.

    2_newNodeJsCylon

    Please let us know any other modules you are having trouble with when using Node.js with Chakra – it will help us prioritize our work better.

  3. Support for Node v4.0.0 and looking ahead

    Node v4.0.0 (stable) is out. We have been trying to keep up with the pace of change on this new converged repo to make Chakra work with Node v4 and submit a PR to the mainline.

    As the next step before we submit a PR on Nodejs/node (master), we have now published the code delta to enable Chakra on Node v4.0.0 on our repo to start getting early feedback on the same from key Node contributors and the Node community.

    Porting these changes to v4.0.0 required us to make some changes and additions to Chakra’s hosting APIs for external ArrayBuffer support. This support was added and previewed in the latest Windows Insider build. The latest Insider build also brings more advanced ES6 support with ES6 Classes, ES6 Generators, ES6 Destructuring, ES7 Async Functions and ES7 Exponentiation operator, among other ES6 features already supported by Chakra (see ES6 compat table).

    To run and test the abovementioned changes for Node v.4.0.0, join the Windows Insider Program and install the latest publicly-available Windows 10 flight.

    We understand that the above might not be ideal for all and thus we plan to submit a PR to the Node mainline as soon as these API updates become broadly available on Windows 10. We’ll of course inform the community once we know the exact timing.

Thanks for all the support so far! Your feedback is critical to this project and as always, we love to hear from you. So please keep it coming.

Join the conversation

  1. I’m now on Windows 10.0.10586.63. On a prior release I had installed Node.JS and could use it fine but lost that version when I tried to automatically startup my node app and the system died on reboot. I tried to reproduce that but failed. I could install Chakra but the node command gave an error message.

    What finally worked was a minimal approach on a clean build without installing node. I just run my .js (actually .ts) app without installing node explicitly. I can also install modules but have to require using (‘./node_module/”) because it’s not obvious how to setup the search path. It appears that the build process added node.dll for me.

    Is there current documentation on how to install node.js in this version of Windows IoT and how to make modules available to via the path. I also want to set my UWP node program to run at startup.