JavaScript モジュールとサードパーティライブラリ

  • リリースバージョン: Zurich
  • 更新日 2025年07月31日
  • 所要時間:7分
  • JavaScript モジュールを使用してコードベースを最適化し、関連するコードをグループ化したり、サードパーティライブラリを追加してアプリケーション内でコードを再利用したりします。

    JavaScript モジュールの使用の概要

    モジュールは JavaScript ファイルであり、インスタンス上のアプリケーション内で共有および再利用される関連コードが含まれています。ServiceNow IDE または ServiceNow SDK で作成または変換されたスコープ対象のアプリケーションに、JavaScript モジュールとサードパーティライブラリを追加できます。アプリケーションをビルドする前に、TypeScript を使用してモジュールを作成し、それを JavaScript にコンパイルすることもできます。インスタンスにアプリケーションをインストールすると、JavaScript モジュールは EcmaScript モジュールの [sys_module] テーブルに格納されます。

    モジュールでは、export ステートメントで再利用するコードを特定します。次に、import ステートメントまたは require ステートメントを使用して、アプリケーションの他の場所でコードを再利用します。モジュールコードを使用するには、サードパーティのノードパッケージマネージャー (npm) ライブラリを依存関係としてアプリケーションに追加する必要があります。JavaScript モジュールの作成に使用される構文に関する一般的な情報については、MDN Web Docs Web サイトの「JavaScript modules (JavaScript モジュール)」ページを参照してください。

    注:
    グローバル Glide サーバー API をモジュールで使用するには、 @servicenow/glide パッケージからインポートする必要があります。詳細については、「サーバー API のインポート」を参照してください。

    制限事項

    • グローバルアプリケーションとアプリケーションのカスタマイズはサポートされていません。
    • モジュールは、追加されたアプリケーションスコープ内でのみ使用できます。アプリケーションスコープ全体で使用することはできません。
    • ECMAScript 機能のサブセットは、「JavaScript engine feature support」に従ってモジュールでサポートされます。
    • Node.js API はモジュールではサポートされていません。ServiceNow SDKビルドプロセスは、モジュールのパッケージ化中にNode.jsビルトインモジュールをポリフィルします。それ以外の場合、モジュールはnode_modulesディレクトリから解決されます。
    • Web API に関連するグローバル変数はサポートされていません。
    • アプリケーションに追加されたサードパーティライブラリは、ServiceNow API に対するアクセスや呼び出しはできません。
    • サードパーティライブラリからの CommonJS モジュールは、エクスポートが定義されていない限りサポートされません。サブパスのインポートは CommonJS モジュールではサポートされていません。サードパーティライブラリからの ECMAScript モジュールはサポートされています。
    • import ステートメントと export ステートメントは、モジュールでのみサポートされています。ビジネスルールやスクリプトインクルードなど、スクリプトにモジュールコードをインポートするには、require ステートメントを使用します。
    • JavaScript モジュール [sys_module] は、ServiceNow IDE 内、または ServiceNow SDKVisual Studio Code でのみ変更できます。
    重要:
    サポートされていない API や ECMAScript 機能など、サポートされていない機能に依存するサードパーティライブラリを使用することはできません。詳細については、「サードパーティライブラリのサポート」を参照してください。

    モジュールのエクスポート

    モジュールで、export ステートメントで再利用するコードを特定します。名前付きエクスポートまたはデフォルトのエクスポートを使用できます。名前付きエクスポートは変数、定数、関数、またはクラスに使用できますが、デフォルトのエクスポートは関数またはクラスのみに使用できます。次の例は、モジュール内の複数の機能 (関数と変数) の名前付きエクスポートを追加する 1 つの方法です。
    export { myFunction, myVariable };

    モジュールのインポート

    再利用するモジュールコードをインポートするには、他のモジュールで import ステートメントを使用するか、サーバーサイドスクリプトで require ステートメントを使用します。

    次の例は、エクスポートされた機能をモジュールにインポートする 1 つの方法です。
    import { feature } from 'path/to/module';
    次の例は、エクスポートされた機能をスクリプトにインポートする 1 つの方法です。
    const { feature } = require('path/to/module');
    注:
    ある TypeScript ファイルから別の TypeScript ファイルにコードをインポートするには、 .ts ファイル拡張子を含める必要があります。たとえば、「 ./module.ts」から { feature } をインポートします。
    短縮形を使用してモジュールコードをインポートするには、アプリケーションの package.json ファイルの imports フィールドでサブパスを使用します。例:
    {
    	"name": "math",
    	"version": "1.0.0",
    	"exports": {
    		"./functions/*.js": "./src/functions/*.js",
    		"./functions/private-functions/*": null
    	},
    	"imports": {
    		"#calc": "calculus",
    		"#derivative": "calculus/derivative"
    	},
    	"dependencies": {
    		"calculus": "1.0.0"
    	}
    }
    この例に基づくと、math アプリケーションにインポートするたびに derivative.js への相対パスを書き出す代わりに、#derivative 短縮形を使用できます。サブパスを imports フィールドで使用して、#calc などの依存関係の短縮形を使用することもできます。
    import { derivative } from '#derivative';
    import * as calculus from '#calc';

    サードパーティライブラリの追加

    アプリケーションは、モジュールコードを使用するために、サードパーティライブラリへの依存関係を宣言する必要があります。アプリケーションの package.json ファイルに、依存関係のパッケージ名とバージョンを含めます。たとえば、「math」ライブラリのモジュールを「test」アプリケーションで使用するために、「math」パッケージを依存関係として追加します。
    {
    	"name": "test",
    	"version": "1.0.0",
    	"dependencies": {
    		"math": "1.0.0"
    	}
    }

    サーバー API のインポート

    サーバー API をインポートしてモジュールで使用するには、 import ステートメントを使用します。Glide API は、 @servicenow/glide パッケージまたはパッケージ内の名前空間からインポートできます。

    たとえば、次のようになります。
    import { API } from '@servicenow/glide';
    import { API } from '@servicenow/glide/<namespace>';
    次の例では、 gs (GlideSystem) API と GlideRecord API がモジュールにインポートされます。
    import { gs } from '@servicenow/glide';
    import { GlideRecord } from '@servicenow/glide';
    次の例では、 RESTAPIRequest API と RESTAPIResponse API は、モジュール内の sn_ws_int 名前空間で実行されるため、その名前空間からインポートされます。
    import { RESTAPIRequest, RESTAPIResponse } from '@servicenow/glide/sn_ws_int';

    使用可能なサーバー API の詳細については、「 Server API reference」を参照してください。

    スクリプトインクルードのインポート

    スクリプトインクルードをインポートしてモジュールで使用するには、 import ステートメントを使用します。スクリプトインクルードは、 @servicenow/glide パッケージのアプリケーションスコープまたはグローバルスコープからインポートできます。

    たとえば、次のようになります。
    import { global } from '@servicenow/glide/global';
    import { ScriptInclude } from '@servicenow/glide/<scope>';

    スクリプトインクルードの詳細については、「 Script includes」を参照してください。