You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 14 Next »

Introduction

The Oracle® GraalVM JavaScript Runtime implements ECMAScript standards and does not include modules that are specific for Node.js such as http, fs etc., for details see https://www.graalvm.org/latest/reference-manual/js/Modules/

The Oracle® GraalVM allows to install 3rd-party packages that work as replacements for Node.js modules.

Use of Oracle® GraalVM for jobs is available starting from the following releases:

FEATURE AVAILABILITY STARTING FROM RELEASE 2.5.4

FEATURE AVAILABILITY STARTING FROM RELEASE 2.6.1

Installation

Users can install Node.js 3rd-party packages in any location, preferably in the Oracle® GraalVM's ./bin directory. Consider to use a current version of the Oracle® GraalVM:

Example how to install JavaScript Runtime packages for Linux
# set location of GraalVM
JAVA_HOME=/opt/java/graalvm-community-openjdk-17.0.7+7.1

# install Node.js packages in $JAVA_HOME/bin/node_modules sub-directory
$JAVA_HOME/bin/npm install url
$JAVA_HOME/bin/npm install Buffer

Note: Adding 3rd-party packages does not require restart of a JS7 Agent. Instead, the package will be considered with the next execution of the job.

Configuration

By default the Oracle® GraalVM does not allow to load 3rd-party packages using the require() function. Users who wish to add such packages to their JavaScript jobs can create a JS7 - Job Resource that holds the required configuration items.

Download sample Job Resource (upload .json): pdJavascript.graalvm.options.jobresource.json

In the Configuration->Inventory view navigate to the folder that should store the Job Resource.

  • The Job Resource can be assigned an arbitrary name.
  • The Job Resource holds a single argument with the name js7_options.graalvm.js (required):
  • Users can click the icon in the input field for the argument value to open the editor:
    .


As a value to the Job Resource argument a number of options for Oracle® GraalVM can be added like this:

Example how to install JavaScript Runtime packages for Linux
toFile('
{
    "options": {
        "js.commonjs-require": true,
        "js.commonjs-require-cwd": "/opt/java/graalvm-community-openjdk-17.0.7+7.1/bin/node_modules",
        "js.commonjs-core-modules-replacements": ""
     }
}','*.json')


Explanation:

  • toFile: the JS7 toFile() function takes two arguments:
    • the string that holds the Oracle® GraalVM options in JSON format,
    • the file name extension *.json. A file with this extension will be created in the JS7 Agent's <data>/work directory and will be used when executing JavaScript jobs.
  •  Options
    • js.commonjs-require: Is required to hold the value true in order to enable use of 3rd-party packages.
    • js.commonjs-require-cwd: Specifies the path to the node_modules directory that holds 3rd-party packages.
    • js.commonjs-core-modules-replacements: Optionally can be used to map built-in Node.js modules to 3rd-party packages. The syntax <node-built-in-module>:<3rd-party-package>[,<node-built-in-module>:<3rd-party-package>] can be used.
    • For details see https://www.graalvm.org/latest/reference-manual/js/Modules/

Further Resources


  • No labels