Visio Javascript API 加载失败。缺少 Microsoft.Office.WebExtension

Visio Javascript API fails on load. Missing Microsoft.Office.WebExtension

我在 SharePoint 框架 Web 部件中遇到 Visio Javascript API 问题。它一直在工作,但现在失败了。 'Visio' 对象未创建,因为文件 https://appsforoffice.microsoft.com/embedded/1.0/visio-web-embedded.js.

中缺少对 Microsoft.Office.WebExtension 的引用

错误: 未捕获的 ReferenceError:Microsoft 未定义 在 c (visio-web-embedded.js:26)

在visio-web-embedded.js这个函数中引用Microsoft.Office.WebExtension:

        function c() {
            Microsoft.Office.WebExtension.onReadyInternal().then((function() {
                return i()
            }
            )).then((function() {
                ...
                }()
            }
            ))
        }

经过一些搜索后,我添加了对 https://appsforoffice.microsoft.com/lib/1/hosted/office.js 的引用并获得了对 Microsoft.Office.WebExtension 的访问权限,但随后 visio-web-embedded.js 中的另一个对象失败了。

错误: visio-web-embedded.js:26 Uncaught (in promise) TypeError: Cannot read 属性 'richApiMessageManager' of undefined 在 visio-web-embedded.js:26

case 5:
  return X.promisify((function(e) {
    return OSF.DDA.RichApi.richApiMessageManager.addHandlerAsync("richApiMessage", r, e)
  }));

如何正确使用visio-web-embedded.js?有没有我缺少的推荐人。

pnp示例项目React-Visio也有同样的问题: https://github.com/pnp/sp-dev-fx-webparts/tree/master/samples/react-visio

Visio Online 中可能有更新 API。您可以查看我的示例,它静态包含 Visio 嵌入并且看起来仍然有效:

https://github.com/nbelyh/VisioOnlineSpfxWebPart

代码包括这样的 Visio API(在 package.json 中):

  "dependencies": {
    "@microsoft/office-js": "^1.1.40",

然后在config/config.json:

  "externals": {
    "VisioEmbed": {
      "path": "node_modules/@microsoft/office-js/embedded/visio-web-embedded.debug.js",
      "globalName": "Visio"
    }
  },

请注意,这是一个静态引用(即嵌入代码将打包到您的 Web 部件中,而不是从在线 Microsoft 站点引用)。此外,如果将它与您提到的示例进行比较,它是一种不同的方法。 虽然给你一些稳定性 - 你可以确定你正在使用的库版本相互兼容。