问题描述
我正在创建一个团队应用程序以在个人选项卡中显示网页,并且希望吸引当前用户。我的打字稿是
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) {