Я отлаживаю надстройку Excel, встроенную в React. Ранее разработчик кодировал приложение, как если бы оно было веб-сайтом, а не надстройкой Excel, и не обращал внимания на Office. js. В результате, когда мы запускаем его в Excel, мы получаем знаменитую ошибку Error: Office.js has not fully loaded. Your app must call "Office.onReady()" as part of it's loading sequence (or set the "Office.initialize" function). If your app has this functionality, try reloading this page.
Я искал Office.onReady
и Office.initialize
во всем проекте я их не нашел.
Вот frontend/src/index.tsx
, где dva - это «фреймворк, основанный на redux, redux-saga и Reaction-router (Вдохновленный elm и choo) ".
import 'react-app-polyfill/ie11';
import 'react-app-polyfill/stable';
import dva from 'dva';
import './index.css';
import router from './router';
import AuthModel from './models/auth';
import SubscribtionModel from './models/subscription';
import AppModel from './models/app';
import { initializeIcons } from 'office-ui-fabric-react/lib/Icons';
//@ts-ignore
//import createLoading from 'dva-loading';
// 1. Initialize
const app = dva();
//app.use(createLoading());
// 2. Plugins
// app.use({});
// 3. Model
//@ts-ignore
app.model(AuthModel);
app.model(SubscribtionModel)
app.model(AppModel);
// 4. Router
//@ts-ignore
app.router(router);
// 5. Start
app.start('#root');
initializeIcons();
Кто-нибудь знает, куда мне поместить Office.onReady()
, чтобы мы могли убедиться, что Office. js может полностью загружаться при каждом запуске надстройки?
Редактировать 1:
Я попытался mimi c этот файл и изменил один из моих index.tsx
на
render() {
const { items, farItems } = this.props;
console.log("Here is Office:");
console.log(Office);
return (
<AwaitPromiseThenRender
promise={Promise.resolve().then(async () => {
await Office.onReady();
})}
>
<CommonHeader
items={items.map((item: IHeaderItem) => this.renderItem(item))}
farItems={farItems.map((item: IHeaderItem) => this.renderItem(item))}
/>
</AwaitPromiseThenRender>
);
}
Он вернул ошибку TypeScript: Property 'onReady' does not exist on type 'typeof Office'. TS2339
, тогда как объект Office
хорошо напечатан в консоли. Кто-нибудь имеет представление о проблеме?
Редактировать 2:
Я пытался добавить следующий код в мой frontend/src/index.tsx
выше. Он все еще вернулся Property 'onReady' does not exist on type 'typeof Office'. TS2339
.
export function render(oldRender: () => void) {
Office.onReady((reason: any) => {
oldRender();
});
}