如何在Visual Studio 2017 Office插件TypeScript项目中实现Polyfill承诺
我在Office外接程序中使用TypeScript,我想特别使用异步/等待函数。项目无法使用“TS2468 TypeScript找不到全局值“Promise”进行编译 我在这里读到,我必须为Promise创建一个polyfill,但到目前为止,我还没有弄清楚如何让polyfill在Visual Studio 2017中工作。我正在尝试使用core js,并已使用npm install core js将其安装到项目中。我可以看到core js安装在node_模块下。npm还创建了一个package.json文件,其中包含以下内容:如何在Visual Studio 2017 Office插件TypeScript项目中实现Polyfill承诺,typescript,visual-studio-2017,es6-promise,office-js,polyfills,Typescript,Visual Studio 2017,Es6 Promise,Office Js,Polyfills,我在Office外接程序中使用TypeScript,我想特别使用异步/等待函数。项目无法使用“TS2468 TypeScript找不到全局值“Promise”进行编译 我在这里读到,我必须为Promise创建一个polyfill,但到目前为止,我还没有弄清楚如何让polyfill在Visual Studio 2017中工作。我正在尝试使用core js,并已使用npm install core js将其安装到项目中。我可以看到core js安装在node_模块下。npm还创建了一个package
{
“需要”:对,
“lockfileVersion”:1,
“依赖项”:{
“核心js”:“^2.5.3”
}
}
这是我的tsconfig.json文件:
{
“编译器选项”:{
“skipLibCheck”:正确,
“moduleResolution”:“节点”
},
“排除”:[
“节点_模块”
]
}
我有require('core-js')代码>在FunctionFile.ts顶部声明,但错误仍然存在
我遵循了这个问题中提供的指导:
使用基于此链接创建的相同加载项:
我在测试类型脚本文件中添加了以下内容:
(function () {
Office.initialize = function (reason) {
(window as any).Promise = OfficeExtension.Promise;
};
})();
async function test() {
return 'hello';
}
在构建项目时,我仍然会遇到同样的错误。“TS2468 TypeScript找不到全局值‘Promise’。”我还使用(窗口为任意窗口)进行了尝试。Promise=OfficeExtension.Promise代码>位于顶部。似乎可以通过将以下lib
属性添加到compilerOptions
对象的tsconfig.json文件中来解决此问题:
"lib": [ "es5", "dom", "es2015.promise" ]
换句话说,更新ts.config文件的内容,如下所示:
{
"compilerOptions": {
"skipLibCheck": true,
"moduleResolution": "node",
"lib": [ "es5", "dom", "es2015.promise" ]
},
"exclude": [
"node_modules"
]
}
@MichaelZlatkovsky Microsoft的可能副本的副本,使用基于此链接创建的相同加载项,我将以下内容添加到我的测试类型脚本文件:(function(){Office.initialize=function(reason){(任何窗口).Promise=OfficeExtension.Promise;//如果需要初始化某些内容,可以在此处执行。};}();异步函数测试(){return'hello';}
我在构建项目时仍然会遇到相同的错误。“TS2468 TypeScript无法找到全局值‘承诺’。@J Allen——感谢您提出此问题。我们已经更新了文档,包括了关于在ts.config中包含lib
属性的指导:。这正是我所需要的。工作得很有魅力。再次感谢金姆!很乐意帮忙。还有,我要向@MichaelZlatkovsky微软公司大喊一声,感谢你和我讨论了这件事……谢谢你,迈克尔@MichaelZlatkovsky Microsoft--仅供参考,将其添加到tsconfig文件确实解决了编译器的问题,但在运行时失败了。我通过将
添加到FunctionFile.html页面修复了这个问题。我不确定这是不是最好的方法,但现在对我来说很有效。