我正在尝试使用typescript + react来构建cordova app。
所以我需要在外部应用程序(图库或PDF阅读器,用户可以手动选择选项)中打开base64图像或pdf,并且遇到了这个cordova插件“InAppBrowser”。
问题是,整个参考和文档都是针对JavaScript制作的,当我尝试在TS中使用它时会导致错误
var ref = cordova.InAppBrowser.open(base64path, '_blank', 'location=yes');
“Cordova”类型中不存在“InAppBrowser”属性。
我已经安装了“cordova”和“cordova-in-app-browser-plugin”(index.d.ts文件)的打字,但它并没有解决问题。 有人知道解决方案吗?感谢。
答案 0 :(得分:3)
看起来由于某种原因,InAppBrowser打字文件在安装时没有“打开”。我能够通过一个新的cordova项目在本地重现这个问题 - >通过config.xml GUI“添加”安装InAppBrowser,通过NPM安装打字。
我不确定如果首先安装打字机,这是否会重现,然后添加或不添加cordova插件 - 我想它可能,但无论哪种方式,解决方案是InAppBrowser接口永远不会添加到cordova。这是一个简单的解决方案。
导航到typings文件夹InAppBrowser.d.ts,然后添加:
interface Cordova{
InAppBrowser: InAppBrowser
}
然后,按照原始帖子(我使用google.com)进行通话:
var ref = cordova.InAppBrowser.open('http://www.google.com','_blank','location=yes')
答案 1 :(得分:0)
我已经为cordova-plugin-inappbrowser提交了一个更正的打字文件到DefinitelyTyped。从version 1.7.0开始,此错误已得到修复。
答案 2 :(得分:0)
作为上述回答的补充,我在编译到cordova项目的www文件夹的多平台angular 5应用程序中遇到了类似的问题。 Typescript无法解析window.cordova.InAppBrowser(即使在将cordova-plugin-inappbrowser添加为开发依赖项之后也是如此)。
对于我来说,我需要在主项目的根文件夹中的“ types.d.ts”文件中添加“接口Cordova {...”定义。
希望这对别人有帮助,就像上面的帖子对我有帮助:)
答案 3 :(得分:0)
对于我来说,我要做的就是将以下行添加到文件的开头:
declare var cordova: any;