@azure/msal-browser TypeError:this.startPerformanceMeasurement 不是函数

Eri*_*ric 9 azure azure-ad-msal msal.js

介绍

因为 nuxt 3 中还没有构建 Auth 库,所以我正在尝试创建自己的可组合项 useAuth。

问题

当我尝试调用 loginRedirect 或 loginPopup 方法时,出现 startPerformanceMeasurement 错误。

Uncaught (in promise) TypeError: this.startPerformanceMeasurement is not a function
    at PerformanceClient2.startMeasurement (PerformanceClient.ts:100:45)
    at BrowserPerformanceClient2.startMeasurement (BrowserPerformanceClient.ts:46:55)
    at RedirectClient2.<anonymous> (StandardInteractionClient.ts:204:64)
    at step (_tslib.js:87:23)
    at Object.next (_tslib.js:68:53)
    at _tslib.js:61:71
    at new Promise (<anonymous>)
    at __awaiter (_tslib.js:57:12)
    at StandardInteractionClient2.getDiscoveredAuthority (StandardInteractionClient.ts:202:115)
    at RedirectClient2.<anonymous> (StandardInteractionClient.ts:142:48)
Run Code Online (Sandbox Code Playgroud)

代码

可组合项/useAuth.js

Uncaught (in promise) TypeError: this.startPerformanceMeasurement is not a function
    at PerformanceClient2.startMeasurement (PerformanceClient.ts:100:45)
    at BrowserPerformanceClient2.startMeasurement (BrowserPerformanceClient.ts:46:55)
    at RedirectClient2.<anonymous> (StandardInteractionClient.ts:204:64)
    at step (_tslib.js:87:23)
    at Object.next (_tslib.js:68:53)
    at _tslib.js:61:71
    at new Promise (<anonymous>)
    at __awaiter (_tslib.js:57:12)
    at StandardInteractionClient2.getDiscoveredAuthority (StandardInteractionClient.ts:202:115)
    at RedirectClient2.<anonymous> (StandardInteractionClient.ts:142:48)
Run Code Online (Sandbox Code Playgroud)

索引.vue

import * as msal from '@azure/msal-browser'

let state = {
    authService: null,  
}

export const useAuth = () => {
    // use public configuration from nuxt 
    var config = useAppConfig();
    //create authentication instance
    state.authService = new msal.PublicClientApplication(config.msalConfig);

    //return signIn method
    return {
        signIn
    }
}

const signIn = async () => {
    const tokenRequest = {
        scopes: [
            'openid', 
            'offline_access', 
            'Users.Read'
        ],
    }
    const response = await state.authService
        .loginRedirect(tokenRequest)
        .then(() => {

        })
        .catch(err => {
            console.log(err) //TypeError: this.startPerformanceMeasurement is not a function
        });
}
Run Code Online (Sandbox Code Playgroud)

Lau*_*kel 11

显然这是 MSAL 库中的一个错误。

正如Github 上的本期所述,他们目前正在修复问题。

作为临时解决方案,您可以降级到以前的版本。降级可能很简单,只需在引用 package.json 中的版本时删除脱字符号 (^) 即可。

编辑:他们已经发布了修复程序作为 msal-common v9.1.1 的一部分。

  • 在同一线程中形成注释,将 **package.json** 依赖项更改为: `"@azure/msal-browser": "2.32.0", "@azure/msal-common": "9.0.1" , "@azure/msal-react": "1.5.0",` (重要,删除 `^`(如果存在)) (3认同)