【发布时间】:2018-01-12 16:07:53
【问题描述】:
我在 Office 插件中使用 TypeScript,我想专门使用 async / await 函数。项目编译失败,出现“TS2468 TypeScript 找不到全局值‘Promise’”。
我在这里读到我必须为 Promise 创建一个 polyfill,但到目前为止还没有弄清楚如何让一个 polyfill 在 Visual Studio 2017 中工作。我正在尝试使用 core-js,并且有使用 npm install core-js 将其安装到项目中。我可以看到 core-js 安装在 node_modules 下。 npm 还创建了一个带有以下内容的 package.json 文件:
{
"requires": true,
"lockfileVersion": 1,
"dependencies": {
"core-js": "^2.5.3"
}
}
这是我的 tsconfig.json 文件:
{
"compilerOptions": {
"skipLibCheck": true,
"moduleResolution": "node"
},
"exclude": [
"node_modules"
]
}
我在 FunctionFile.ts 的顶部声明了require('core-js');,但错误仍然存在。
我遵循了这个问题中提供的指导: Office Addins file in its TypeScript version doesn't work
使用我基于此链接创建的相同加载项: https://docs.microsoft.com/en-us/office/dev/add-ins/develop/convert-javascript-to-typescript
我在我的测试 TypeScript 文件中添加了以下内容:
(function () {
Office.initialize = function (reason) {
(window as any).Promise = OfficeExtension.Promise;
};
})();
async function test() {
return 'hello';
}
我在构建项目时仍然遇到同样的错误。 “TS2468 TypeScript 找不到全局值‘Promise’。”我也尝试过在顶部使用(window as any).Promise = OfficeExtension.Promise;。
【问题讨论】:
-
@MichaelZlatkovsky-Microsoft,使用基于此链接 docs.microsoft.com/en-us/office/dev/add-ins/develop/… 创建的相同加载项,我将以下内容添加到我的测试 TypeScript 文件中:
(function () { Office.initialize = function (reason) { (window as any).Promise = OfficeExtension.Promise; // If you need to initialize something you can do so here. }; })(); async function test() { return 'hello'; }我在构建时仍然遇到相同的错误该项目。 “TS2468 TypeScript 找不到全局值 'Promise'。”
标签: typescript visual-studio-2017 es6-promise office-js polyfills