API Visio Javascript не работает при загрузке. Отсутствует Microsoft.Office.WebExtension

У меня проблемы с API-интерфейсом Visio Javascript в веб-части SharePoint Framework. Он работал, но теперь не работает. Объект Visio не создается, поскольку ссылка на Microsoft.Office.WebExtension отсутствует в файле https://appsforoffice.microsoft.com/embedded/1.0/visio-web-embedded.js.

Ошибка: Uncaught ReferenceError: Microsoft не определена в c (visio-web-embedded.js: 26)

Это относится к Microsoft.Office.WebExtension в этой функции в visio-web-embedded.js:

        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 Неперехваченный (в обещании) TypeError: невозможно прочитать свойство richApiMessageManager из 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


person Robert    schedule 11.09.2020    source источник


Ответы (1)


Возможно, в Visio Online API есть обновление. Вы можете проверить мой образец, он имеет статическое включение встраивания Visio и похоже, что он все еще работает:

https://github.com/nbelyh/VisioOnlineSpfxWebPart

Код включает API Visio, подобный этому (в 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"
    }
  },

Обратите внимание, что это статическая ссылка (то есть код внедрения будет упакован в вашу веб-часть, а не на него будет ссылаться на веб-сайте Microsoft). Кроме того, это другой метод, если вы сравните его с упомянутым вами образцом. Тем не менее, дает вам некоторую стабильность - вы можете быть уверены, что версии используемых вами библиотек совместимы друг с другом.

person Nikolay    schedule 11.09.2020
comment
Хорошо спасибо! Сегодня файл appsforoffice.microsoft.com/embedded/1.0/visio-web -embedded.js обновлен и не имеет ссылки на Microsoft.Office.WebExtension. Итак, проблема ушла. - person Robert; 15.09.2020