ウェブサイト検索

SAPUI5 TypeScriptでNPMパッケージを使用する


私はSAPUI5アプリでnpmパッケージsoapを使用しようとしています。

私はウェブ開発が初めてなので、このチュートリアルを試してみました:
https://github.com/SAP-samples/ui5-typescript-tutorial/tree/main/exercises/ex8

私が試したこと:

  • yeoman-generator easy-ui5 ts-app を使用して SAPUI5 プロジェクトを作成しました
  • 開発依存関係としてsoapをインストールしました
  • コントローラーにcreateClientメソッドをインポートしようとしました:
    import { createClient } from "soap"
  • クライアントを作成する:
    const SOAPClient:any=createClient("",function(){});
  • npm startでアプリを実行します

でも、Chromeのコンソールでこのようなエラーが出ます:

GET http://</resources/http.js net::ERR_ABORTED 404 (見つかりません) loadScript @ ui5loader.js:1351 2022-05-24 10:39:01.476100 JavaScriptリソースの読み込みに失敗しました: http.js - sap.ui.ModuleSystem Log.js?eval:452

ターミナルでは次のようなメッセージが表示されます:

ローカルの代替 /home/user/projects/zvtle.om/node_modules/string_decoder/lib/http.js よりも組み込みモジュール http を優先しています。この動作を無効にするには preferBuiltins: false を、警告を無効にするには preferBuiltins: true を渡してください

Chrome の Sources の中の Resources では、UI5 ライブラリが読み込まれているのが確認でき、soap.js ファイルも解析され、現在は sap.ui.define を使用しています。しかし、soap が必要とするすべてのパッケージ(例えば http など)は読み込まれていません。

長い間探しましたが、ターミナルの出力に記載されている preferBuiltins: true を解析できる場所は見つかりませんでしたし、それが私の問題を解決するかどうかも確かではありません。

回答 #1

npmパッケージsoapはNode.js用であり、ブラウザでは動作しません。httpパッケージは標準のNode.jsパッケージです。

私は、パッケージeasy-soap-request(https://www.npmjs.com/package/easy-soap-request)があなたのニーズに合うかもしれないと思います。ただし、私はこのパッケージを使った経験はありませんが、READMEにはブラウザからの例が示されています。