You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Nuxt中部署Office Add-in?Vue迁移遇未定义错误

解决Nuxt中Office Add-in的window.Office未定义问题

问题原因

你的插件代码执行时,Office.js脚本还未完成加载,导致window.Office为undefined,进而触发Cannot read properties of undefined (reading 'onReady')错误。Nuxt的客户端插件默认在页面初始化阶段执行,但Office.js需要额外加载时间,且微软Office Add-in要求必须先加载Office.js才能访问Office对象。

解决方案

1. 确保Office.js正确引入

在Nuxt的入口模板文件(app.html,无则在项目根目录创建)中,手动添加Office.js加载脚本到<head>标签内:

<!DOCTYPE html>
<html {{ HTML_ATTRS }}>
  <head {{ HEAD_ATTRS }}>
    {{ HEAD }}
    <!-- 引入Office.js -->
    <script src="https://appsforoffice.microsoft.com/lib/1/hosted/Office.js"></script>
  </head>
  <body {{ BODY_ATTRS }}>
    {{ APP }}
  </body>
</html>

2. 调整插件代码,等待Office.js加载完成

修改plugins/office.js代码,确保Office对象可用后再执行初始化逻辑:

export default defineNuxtPlugin(() => {
  function initOffice() {
    window.Office.onReady(() => {
      alert("office is ready");
      // 此处可添加Office Add-in初始化逻辑
      // 比如组件挂载、功能初始化等
    });
  }

  // 检查Office是否已加载,未加载则监听OfficeReady事件
  if (typeof window.Office !== 'undefined') {
    initOffice();
  } else {
    document.addEventListener('OfficeReady', initOffice);
  }
});

3. 修正Nuxt配置中的插件路径

检查nuxt.config.js中的插件路径,确保与实际文件一致(你当前配置的是outlook.js,但实际文件为office.js):

export default defineNuxtConfig({
  plugins: [
    { src: '~/plugins/office.js', mode: 'client' },
  ],
});

补充说明(针对Nuxt 2)

若使用Nuxt 2,插件代码需调整为:

export default ({ app }) => {
  function initOffice() {
    window.Office.onReady(() => {
      alert("office is ready");
    });
  }

  if (typeof window.Office !== 'undefined') {
    initOffice();
  } else {
    document.addEventListener('OfficeReady', initOffice);
  }
};

内容的提问来源于stack exchange,提问作者Sylnois

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 21:15:47