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.ModuleSystemLog.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にはブラウザからの例が示されています。