JavaScriptモジュールの階層

ファイル・システムの場所ではなくインポート名を使用してMLEモジュールに解決するする方法について説明します。

一般的なNode.jsまたはブラウザベースのワークフローでは、モジュール・インポートの後にファイル・システム内のその場所を指定する必要があります。たとえば、次の行はNode.jsの有効なモジュール・インポート文です:

import * as myMath from './myMath.mjs'

Node.jsで使用すると、この文はmyMathのコンテンツを現在のスコープにインポートします。

ただし、MLE JavaScriptモジュールはデータベースに格納されるため、識別に使用するファイル・システム・パスはありません。かわりに、MLEは、目的のモジュールに解決されるインポート名を使用します。

ノート:

モジュール・インポートがJavaScriptランタイム・エンジンによって検出されるとすぐに、strict modeが適用されます。

トピック

MLE環境を使用したインポート名の解決

MLEは、ファイル・システムの場所ではなく、いわゆるインポート名をかわりに使用します。インポート名は有効なJavaScript識別子である必要がありますが、この点以外は自由に選択できます。

例5-1 MLE環境を使用したモジュールへのインポート名のマップ

この例は、例5-2で定義されているモジュールnamed_exports_module内の機能を参照するコードのインポート名を使用する方法を示しています。

Oracle DatabaseのMLEには、実行時にインポート名namedExportsとその対応するMLEモジュールnamed_exports_moduleの間のリンクが必要です。インポート名と同様に、MLE環境に任意の有効な名前を選択できます。潜在的なマッピングを次のスニペットに示します。モジュールmod_object_import_modの完全な定義は、例5-6を参照してください。

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() {...}
/