代码之家  ›  专栏  ›  技术社区  ›  Simon

爱奥尼亚·科尔多瓦承诺。种族([])。最后,它不是一个函数

  •  0
  • Simon  · 技术社区  · 5 年前

    我有一个爱奥尼亚项目,它仍然使用 Cordova@10.0.0 , angular@5.2.11 和 typescript: ^3.9.5 & node@10

    我目前正在尝试实现KeyClope身份验证。 下面是这些步骤 Official Keycloak 我正试图在我的应用程序中实现这一点。

    我所做的步骤:

    1. 添加 "cordova-plugin-inappbrowser": "5.0.0" 对我的 devDependencies 在 package.json
    2. 添加 "keycloak-js": "^15.0.2" 对我的 dependencies 在 包裹json
    3. 更新了我的 tsconfig.json 我补充说 "ES2018" 在里面 compilerOptions - lib
    4. 更新了我的 tsconfig。json 我补充说 es2015 在里面 compilerOptions - module
    5. 更新了我的 tsconfig。json 我补充说 es6 在里面 compilerOptions - target
    6. 在 config.xml 升级了iOS目标版本 <preference name="deployment-target" value="14.0" />

    该应用程序构建良好。

    加载应用程序时,safari模拟器控制台中出现以下错误:

    Error: 
    Uncaught (in promise): TypeError: Promise.race([promise, timeoutPromise]).finally is not a function. 
    (In 'Promise.race([promise, timeoutPromise]).finally(function () { clearTimeout(timeoutHandle); })', 
    'Promise.race([promise, timeoutPromise]).finally' is undefined)
    

    引发这一问题的承诺可以在官方网站上找到 Github Repo 从钥匙斗篷。将其更改为 .then(..) 它不再抛出错误。但手动更改依赖项并不是一个真正可行的选择。

    我是错过了什么还是这是一个真正的错误?我在网上找不到任何有用的东西。

    如何初始化KeyClope:

    public keycloak: Keycloak.KeycloakInstance;
    
    this.keycloak = Keycloak({
      clientId: 'webapp',
      realm: 'master',
      url: 'http://localhost:8080/auth/'
    });
    
    this.keycloak.init({
      adapter: 'cordova'
    })
    

    输出 ionic info :

    Ionic:
    
       Ionic CLI          : 6.17.0 (/usr/local/lib/node_modules/@ionic/cli)
       Ionic Framework    : ionic-angular 3.9.2
       @ionic/app-scripts : 3.2.4
    
    Cordova:
    
       Cordova CLI       : 10.0.0
       Cordova Platforms : android 7.1.4, ios 6.2.0
       Cordova Plugins   : no whitelisted plugins (18 plugins total)
    
    Utility:
    
       cordova-res                          : 0.15.3
       native-run (update available: 1.4.1) : 1.4.0
    
    System:
    
       ios-deploy : 1.11.4
       ios-sim    : 8.0.2
       NodeJS     : v10.24.1 (/usr/local/Cellar/node@10/10.24.1_1/bin/node)
       npm        : 6.14.12
       OS         : macOS Big Sur
       Xcode      : Xcode 13.0 Build version 13A233
    

    和 navigator.userAgend 为正在使用的safari版本提供以下信息:

    "Mozilla/5.0 (iPhone; CPU iPhone OS 15_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148"
    

    我还想提一下。在模拟器上Cordova应用程序的Web Inspector中 new Promise(() => {}).finally; 它会回馈 undefined 但当我在模拟器上Safari的Web Inspector中执行此操作时,它会返回一个有效的输出。

    0 回复  |  直到 5 年前