未处理的承诺拒绝警告(Cordova Angular)

Posted

技术标签:

【中文标题】未处理的承诺拒绝警告(Cordova Angular)【英文标题】:Unhandled Promise Rejection Warning (Cordova Angular) 【发布时间】:2018-07-02 17:42:02 【问题描述】:

当我在 cmd cordova run android 中执行时,它返回:

Android Studio project detected
(node:6824) UnhandledPromiseRejectionWarning: Unhandled Promise Rejection (rejection id: 1): Operation Failed
(node: 6824) [DEP0018] DeprecationWarning: Unhandled Promise Rejections are deprecated. In the future, promise rejections 
that are not handled will terminate the node.js process with a non-zero exit code.

我不明白这个问题,如果你对我有任何建议。我已经在***上阅读了这个问题的其他一些答案,但是.. 这是我下面的代码

module.exports = function(ctx) 
// make sure android platform is part of build 
if (ctx.opts.platforms.indexOf('android') < 0) 
    return;

var fs = ctx.requireCordovaModule('fs'),
    path = ctx.requireCordovaModule('path'),
    deferral = ctx.requireCordovaModule('q').defer();

var platformRoot = path.join(ctx.opts.projectRoot, 'platforms/android');
var apkFileLocation = path.join(platformRoot, 'build/outputs/apk/android-debug.apk');

fs.stat(apkFileLocation, function(err,stats) 
    if (err) 
         deferral.reject('Operation failed');
     else 
        console.log('Size of ' + apkFileLocation + ' is ' + stats.size +' bytes');
        deferral.resolve();
    
);

return deferral.promise;;

感谢您的帮助。

【问题讨论】:

不要只用“操作失败”来拒绝defarral,而是尝试传入err 对象以获取错误消息。试试deferral.reject('Operation failed: ' + err);deferral.reject('Operation failed: ' + JSON.stringify(err)); 【参考方案1】:

错误意味着你需要处理从 Promise 中抛出的异常。

promise.then(...).catch(...)

如果你不能这样做,你需要避免deferral.reject

【讨论】:

以上是关于未处理的承诺拒绝警告(Cordova Angular)的主要内容,如果未能解决你的问题,请参考以下文章

NestJS/Fastify Cookie 未处理的承诺拒绝警告

Puppeteer -Getting UnhandledPromiseRejectionWarning:管道中未处理的承诺拒绝

条纹元素抛出“未处理的承诺拒绝”

反应本机中未处理的承诺拒绝错误?

可能未处理的承诺拒绝未定义不是一个函数

未处理的承诺拒绝 |重启命令