@azure/msal-browser TypeError: this.startPerformanceMeasurement is not a function

9

介绍

由于目前Nuxt 3中没有内置的身份验证库,因此我正在尝试创建自己的组合函数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)

Code

composables/useAuth.js

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
        });
}

Index.vue

<script setup>
if(process.client) {
    const auth = useAuth()
    auth.signIn()   
}
</script>

一样的情况,我的版本在JavaScript中可以运行,但在TypeScript中不行。 - annes
我也遇到了同样的问题。奇怪的是,在我的本地环境中可以正常工作,但是在我们的开发环境中部署后就会出现错误。在本地环境中,我也尝试通过本地构建来运行它。 - Apurva Mayank
已删除npm模块和锁定文件,现在我可以在本地重新生成它。 - Apurva Mayank
3个回答

11

显然这是MSAL库中的一个bug。

Github上的这个问题所述,他们目前正在修复。

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

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


3
从同一线程的评论中,将您的 package.json 依赖项更改为:
"@azure/msal-browser": "2.32.0", "@azure/msal-common": "9.0.1", "@azure/msal-react": "1.5.0"
(重要的是,如果存在,则删除 ^
- lgiusti84

3

我测试了多个版本,降级到 @azure/msal-browser@2.31.0 版本才能正常工作。


1

是的,我们移除了 ^ 符号,它也可以工作。 - Max

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接