尚未定义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文件,但始终未定义teams参数,也未定义microsoftTeams全局变量,这就是上述代码失败的原因

在使用requirejs加载时,我还需要做其他事情吗?

解决方法

您几乎是正确的。问题是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) {