JavaScript Module Hierarchies
The use of import names as opposed to file-system location to resolve to MLE modules is described.
A typical Node.js or browser-based workflow requires a module import to be followed by its location in the file system. For example, the following line is a valid module import statement in Node.js:
import * as myMath from './myMath.mjs'
Used with Node.js, this statement would import myMath’s contents into the current scope.
However, because MLE JavaScript modules are stored in the database, there are no file-system paths to be used for identification. Rather, MLE uses import names instead that resolve to the desired module.
Note: As soon as a module import is detected by the JavaScript runtime engine, strict mode is enforced.
Resolving Import Names Using MLE Environments
Rather than file-system locations, MLE uses so-called import names instead. Import names must be valid JavaScript identifiers, but otherwise can be chosen freely.
Example: Use an MLE Environment to Map an Import Name to a Module
This example shows how you might use an import name for code referencing functionality in module named_exports_module, which is defined in Example: Function Export using Named Exports.
MLE in Oracle AI Database requires a link between the import name, namedExports, and the corresponding MLE module, named_exports_module, at runtime. Just as with import names, you can choose any valid name for the MLE environment. A potential mapping is shown in the following snippet. See Example: Module Object Definition for a complete definition of module mod_object_import_mod.
CREATE OR REPLACE MLE ENV named_exports_env
imports ('namedExports' MODULE named_exports_module);
/
CREATE OR REPLACE MLE MODULE mod_object_import_mod LANGUAGE JAVASCRIPT AS
import * as myMath from "namedExports";
function mySum() {...}
/