IBM SDK for Node.js z/OS Tech Preview

IBM SDK for Node.js z/OS Technical Preview

The IBM® SDK for Node.js is available for z/OS®, as a limited-time, technical preview only. This preview is based on Version 1.2 of the SDK, but might not be updated in line with Node.js community updates. If there are newer versions of the technical preview, or if it becomes a fully-supported IBM product, these are likely to be based on a more recent LTS version, not Version 1.2.

Technical Preview last update: ea5 – 7 February 2017

IMPORTANT: The following security vulnerabilities have been reported in OpenSSL 1.0.1. The IBM SDK for Node.js z/OS Technical Preview is currently based on Version 1.2 of the SDK, which uses OpenSSL 1.0.1. The technical preview therefore contains these vulnerabilities. Only download the package if you are aware of the risk, and do not use the code in a production environment:



These instructions are specific to this technical preview; for more information about the IBM SDK generally, see the user guides in IBM Knowledge Center, and other topics in this Developer Center.


The content is available subject to the following disclaimer:

The code and application programming interfaces herein are technology preview information that may not be made generally available by IBM as or in a product. You are permitted to use the information only for internal use for evaluation purposes and not for use in a production environment. IBM provides the information without obligation of support and “as is” without warranty of any kind.

Hardware and software requirements

Hardware: IBM zEnterprise® EC12 (zEC12) or newer

Software: z/OS version 2.1 or later, with z/OS UNIX System Services enabled and Integrated Cryptographic Service Facility (ICSF) configured and started. If you want to compile native add-ons, you will also need IBM® z/OS® XL C/C++ compiler version 2.1.1 or later and Native Abstractions for Node.js (nan) 2.5 or later.

Installing and uninstalling

To install:

  1. Download the pax.Z file from the Download section to a z/OS machine.
  2. Extract the pax.Z file inside an installation directory of your choice. For example:
    pax -rf <path_to_pax.Z_file> -x pax
  3. Add the <installation_directory>/bin directory to your path.
  4. Run node and npm from the following locations respectively:

To uninstall:

  • If the installation directory contains only the SDK files, delete the directory.
  • If there are other files in the installation directory, and you want to delete only the SDK files, use the following command to get the list of files to delete:
    pax -z < <downloaded_pax.Z_file>


To compile native add-ons, complete the following steps:

  1. Ensure that Native Abstractions for Node.js (nan) 2.5 or later is installed.
  2. Ensure the IBM z/OS XL C/C++ compiler 2.1.1 or later is installed. Set the following environment variables:
    export CC=/bin/xlc
    export CXX=/bin/xlC
  3. Ensure Python 2.7.x or newer is available on your PATH.
  4. Ensure GNU Make 4.0 or newer is available on your PATH. You can obtain GNU Make 4.0 from Rocket software.
  5. Otherwise, run your Node.js apps in the same way as for other versions of the IBM SDK for Node.js. For more information, see IBM Knowledge Center.

    API documentation

    Node.js v0.12.18 API reference documentation


    • Node.js uses z/OS UNIX System Services semaphores. If the Node.js runtime ends unexpectedly, stale semaphores might be left on the system, potentially resulting in a lack of available semaphores for invoking additional Node.js instances. Currently, you must manually clean up stale semaphores, by using the ipcrm command. Too many stale semaphores results in the following assert:
      # Fatal error in ../src/base/platform/, line 85
      # CHECK_EQ(0, result) failed
      #   Expected: 0
      #   Found: -1
    • If the node process hangs without any output check, confirm whether /dev/random is functional, by entering the following command:
      cat /dev/random | xxd | head
      If /dev/random is not available, ensure that ICSF is started.

    Known issues and limitations

    • The current release requires an address space of at least 700 MB. Use the ulimit -A command to set or display the maximum size of the address space.
    • The Node.js API is not implemented.
    • Interprocess signalling is disabled.
    • You cannot use IBM Monitoring and Diagnostic Tools – Interactive Diagnostic Data Explorer.
    • There is no Node Application Metrics component in this release, so you cannot use IBM Monitoring and Diagnostic Tools – Health Center to monitor your applications.
    • The performance of the technical preview might not match the performance of the SDK on other platforms.


    We want to hear your feedback – you can add comments or issues in Github: