Phonegap应用程序可在预览上运行,但不能在Android设备上运行-Promise

时间:2019-12-17 13:05:22

标签: javascript cordova phonegap

我有一个Phonegap应用程序,该应用程序可以在预览版应用程序上完美运行,但是当我使用Phonegap Build创建APK并将其安装在Android设备上时,除了Promise中的任何代码外,它都可以部分运行。我添加了一些警报,我注意到它在Promise之前就停止工作。

我有以下代码:

    {
        alert('passwordreset before promise');
        return new Promise((resolve, reject) => {
            alert('inside promise');
            this.api.call( '/' + this.endpoint + '/recover', {email: email})
            .then(response => 
            { alert('promise succes');
                resolve(response);
            })
            .catch(errors => 
            {
                reject(errors);
            });

        });
    } 

将执行第一个警报(promise之前的密码),而不执行其他警报。

您是否知道可能会发生什么?

2 个答案:

答案 0 :(得分:0)

您使用Android Studio吗?如果是这样,请检查“ LogCat”选项卡中的日志。 您是否设置了正确的CORS设置?看来您正在发出一些api请求。 在MSDN中,有一篇不错的文章描述了您可能缺少的设置:https://docs.microsoft.com/en-us/visualstudio/cross-platform/tools-for-cordova/security/whitelists?view=toolsforcordova-2017

由于默认情况下禁用Android 9明文。如果问题仍然存在,请验证您的network_security_settings.xml(如果已设置)。

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
  <domain-config cleartextTrafficPermitted="true">
  <domain includeSubdomains="true">10.0.1.1</domain> <!-- Set local api -->
</network-security-config>

您可以在Android清单中设置网络设置文件

<?xml version="1.0" encoding="utf-8"?>
 <manifest>
 <application android:networkSecurityConfig="@xml/network_security_config">
    ...
 </application>
 </manifest>

答案 1 :(得分:0)

Webview中不支持承诺。您需要为ES5转换/编译JS代码。

  

属于ES2015 JavaScript规范(也称为ES6)的部分。

如果需要填充,请查看https://www.promisejs.org/