找不到名称 'Office'

Cannot find name 'Office'

我正在使用 Angular 4 和 Office.js。该项目由 Angular CLI 创建。

代码很简单:

// declare const Office: any;
// With the line above, the app runs perfect

Office.initialize = function () {
  platformBrowserDynamic().bootstrapModule(AppModule);
};

我收到错误消息

Cannot find name 'Office'.

我已经做了npm install --save-dev @types/office-js

我的 tsconfig.json 文件:

{
  "compileOnSave": false,
  "compilerOptions": {
    "outDir": "./dist/out-tsc",
    "baseUrl": "src",
    "sourceMap": true,
    "declaration": false,
    "moduleResolution": "node",
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "target": "es5",
    "typeRoots": [
      "node_modules/@types"
    ],
    "lib": [
      "es2016",
      "dom"
    ]
  }
}

更新 1:

按照@MahmoodSajjadi 的建议,在npm install --save @microsoft/office-js 之后使用

import { Office } from '@microsoft/office-js';

遇到这个错误:

ERROR in /my-app/src/main.ts (3,24): File '/my-app/node_modules/@types/office-js/index.d.ts' is not a module.

ERROR in ./src/main.ts Module not found: Error: Can't resolve 'office-js' in '/my-app/src'

@ ./src/main.ts 3:0-35
@ multi webpack-dev-server/client?http://localhost:4200 ./src/main.ts

在package.json中,实际上是"@microsoft/office-js": "0.0.0",不确定这是不是一个正确的包。


更新 2:

根据 Michael 的回答,似乎 NPM 版本还没有准备好,我会先使用 CDN 版本。感谢大家的帮助!

以下完美运行(注意包名称)

npm install --save office-js @types/office-js

然后将其作为它声明的全局使用。

Office.initialize(0);

注意office-js不是模块,是全局的。因此我们不从它进口。相反,该软件包在环境中可用。

如果我们希望使用导入作为在运行时加载 office-js 的方式,我们可以添加

import 'office-js';

在这种情况下,我们也没有从它导入任何东西,因为没有任何东西可以导入,但我们声明了对其执行的依赖,其副作用是创建全局变量 window.Office

请注意,您在评论中提到了 @microsoft/office-js 软件包。在撰写本文时,这样的包存在但完全是空的,它的入口点指定了一个甚至不存在的文件,所以我怀疑这是否是您打算使用的包。

不相关的 注释中,考虑在 tsconfig.json 文件中明确指定模块格式:

{
  "compilerOptions": {
    "module": "commonjs"
  }
}

这是最重要的设置。

目前,Office.js 不是作为 NPM 包使用,而是作为 CDN 参考使用。 typings/d.ts do 来自 @types,但不是它的实际代码。

我建议你看看Script Lab, a recently-announced tool and also open-source showcase sample, that uses Angular 4, and which you can use for inspiration. Some of the underlying technology is also discussed in a podcast about the project

看来您仍需要指定应使用 office-js 类型。打开 src/tsconfig.app.json 并将 office-js 添加到类型数组,如果它之前是一个空数组,它应该看起来像这样:

"types": [
  "office-js"
]

接下来,您需要在您的项目目录中 运行 命令 tsc -p tsconfig.json,然后再尝试再次构建项目。