首页 > 解决方案 > microsoftTeams 未定义

问题描述

我正在创建一个团队应用程序以在个人选项卡中公开网页,并且我想掌握当前用户。我的打字稿是

import * as microsoftTeams from "@microsoft/teams-js";
...
microsoftTeams.initialize(() => {
            microsoftTeams.getContext(() => {

                microsoftTeams.authentication.getAuthToken({

运行时失败,浏览器报告错误

Uncaught ReferenceError: microsoftTeams is not defined

我正在使用 requirejs 加载依赖项

requirejs.config({
    baseUrl: "wwwroot/js/app",
    paths: {
        knockout: '../lib/knockout/knockout-latest',
        jquery: '../lib/jquery/jquery.min',
        bootstrap: '../lib/bootstrap/bootstrap.bundle.min',
        smartwizard: '../lib/smartwizard/jquery.smartWizard.min',
        '@microsoft/teams-js': '../lib/teams/MicrosoftTeams.min'
    }
});

define(['knockout', 'jquery', 'bootstrap', 'smartwizard', '@microsoft/teams-js', 'NewSiteWizardViewModel'], function (ko, jquery, bs, wiz, teams, app) {

执行时,我可以看到浏览器加载了 MicrosoftTeams.min.js 文件,但 team 参数始终未定义,并且 microsoftTeams 全局变量也未定义,这就是上述代码失败的原因

用requirejs加载它时我需要做其他事情吗?

标签: requirejsmicrosoft-teams

解决方案


你几乎是对的。问题是 MS 团队 lib 与 AMD 兼容,但它将自己定义为microsoftTeams. 因此,您需要做的是修改 config.paths 中的 ID,它会按预期工作:

requirejs.config({
    baseUrl: "wwwroot/js/app",
    paths: {
        knockout: '../lib/knockout/knockout-latest',
        jquery: '../lib/jquery/jquery.min',
        bootstrap: '../lib/bootstrap/bootstrap.bundle.min',
        smartwizard: '../lib/smartwizard/jquery.smartWizard.min',
        'microsoftTeams': '../lib/teams/MicrosoftTeams.min'
    }
});

define(['knockout', 'jquery', 'bootstrap', 'smartwizard', 'microsoftTeams', 'NewSiteWizardViewModel'], function (ko, jquery, bs, wiz, teams, app) {

推荐阅读