You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SAP UI5应用中通过ui5-tooling-modules正确加载@azure/msal-browser?

在SAP UI5应用中集成@azure/msal-browser的解决方案

问题分析

你遇到的模块解析错误,核心原因是UI5工具链的中间件顺序配置不当,导致@azure/msal-browser的请求被错误转发到SAP UI5 CDN,而非读取本地npm包资源;同时缺少对目标npm包的显式处理配置,工具无法正确识别并加载该模块。

解决方案步骤

1. 调整UI5中间件执行顺序

修改ui5.yaml的server.customMiddleware部分,确保ui5-tooling-modules-middleware和ui5-tooling-transpile-middleware在fiori-tools-proxy之前执行,避免代理拦截npm包资源请求:

server:
  customMiddleware:
    - name: ui5-tooling-modules-middleware
      afterMiddleware: compression
    - name: ui5-tooling-transpile-middleware
      afterMiddleware: ui5-tooling-modules-middleware
      configuration:
        debug: true
        transformModulesToUI5:
          overridesToOverride: true
        excludePatterns:
          - /Component-preload.js
    - name: fiori-tools-proxy
      afterMiddleware: ui5-tooling-transpile-middleware
      configuration:
        ui5:
          path:
            - /resources
            - /test-resources
          url: https://ui5.sap.com
    - name: fiori-tools-appreload
      afterMiddleware: fiori-tools-proxy
      configuration:
        port: 35729
        path: webapp
        delay: 300
    - name: fiori-tools-preview
      afterMiddleware: fiori-tools-appreload

2. 为ui5-tooling-modules添加显式包配置

在builder.customTasks的ui5-tooling-modules-task中,指定要处理的@azure/msal-browser包,确保工具能正确识别并打包该模块:

builder:
  customTasks:
    - name: ui5-tooling-modules-task
      beforeTask: replaceVersion
      configuration:
        addToNamespace: true
        packages:
          - name: "@azure/msal-browser"
            exposeAs: "@azure/msal-browser"
    - name: ui5-tooling-transpile-task
      afterTask: ui5-tooling-modules-task
      configuration:
        addToNamespace: true

3. 验证导入语句

保持控制器中的导入语句正确,无需添加.js后缀:

import Controller from "sap/ui/core/mvc/Controller";
import * as msal from "@azure/msal-browser";

export default class App extends Controller {
    public onInit(): void {
        const msalConfig = {
            auth: {
                clientId: 'YOUR_CLIENT_ID'
            }
        };
        console.log(msal);
    }
}

4. 清理缓存并重启服务

执行以下命令清理UI5缓存,然后重启开发服务:

ui5 cache clean
npm start

备选方案:直接引入CDN脚本

如果上述工具链配置仍无法解决问题,可以绕过npm包管理,直接在webapp/index.html中引入MSAL的CDN脚本,全局使用该模块:

<script src="https://alcdn.msauth.net/browser/2.38.1/js/msal-browser.min.js"></script>

修改控制器代码:

import Controller from "sap/ui/core/mvc/Controller";

export default class App extends Controller {
    public onInit(): void {
        const msalConfig = {
            auth: {
                clientId: 'YOUR_CLIENT_ID'
            }
        };
        const msalInstance = new window.msal.PublicClientApplication(msalConfig);
        console.log(msalInstance);
    }
}

内容的提问来源于stack exchange,提问作者softshipper

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 01:20:13