【问题标题】:how to handle error while extracing the zip file in node.js在 node.js 中提取 zip 文件时如何处理错误
【发布时间】:2013-05-08 08:00:22
【问题描述】:

我正在尝试上传 zip 文件,然后我必须在服务器端提取它,而且我必须在提取该 zip 文件时处理错误。提取我正在尝试这样

var zip = new AdmZip(x);

zip.extractAllTo('target path');

extractAllTo 不包含回调函数,如果包含我可以轻松处理错误,所以请告诉我如何在提取 zip 文件时处理错误。

我正在创建一个 tmp 文件夹并在上传文件后将上传的文件保存到 tmp 文件夹中,然后我将上传的文件存储到原始文件夹中,我将采用该路径存储 db(mongodb)。存储数据后我在该回调函数中将结果存储在回调函数中我试图删除该 tmp 文件夹但我无法删除它。如果没有该数据存储的回调函数它正在工作,我已经厌倦了删除。我做错了什么。如何解决它。我试过这样

db.save({'filepath':'xxxxx'},function(err,data)
{

     if(data)
     {
        fs.rmdir('xxxx/xxxxx',function(err)
       {
             if(err)
             {
                console.log('err')

             }else 
            {
               console.log('removed');

            } 

       });
     }
});

我总是在控制台中收到那个错误。

【问题讨论】:

    标签: javascript node.js mongodb fs


    【解决方案1】:

    从 adm-zip 查看代码后,唯一的方法是将提取嵌入到 try {} catch 语句中:

    var zip = new AdmZip(x);
    
    try { 
        zip.extractAllTo('target path');
    } catch ( e ) { 
        console.log( 'Caught exception: ', e );
    }
    

    【讨论】:

    • 如果不存在错误,我应该从哪里开始下一个功能。我可以像这样开始尝试黑色吗? try { zip.extractAllTo('target path'); db.find({'username':xxxx},function(err,result){console.log(result) });) }
    【解决方案2】:

    看起来您的库是同步的,这就是它不使用回调的原因。如果您将 zip 文件上传到服务器,同步调用将为所有客户端停止整个服务器,因此您应该切换到异步库来完成这项工作。仅供参考,对于同步版本,要处理错误,您可以使用 try/catch 结构,因为抛出的异常在单个执行堆栈中。

    【讨论】:

      猜你喜欢
      • 2017-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多