上传图像时出现“未捕获错误:匹配错误:预期字符串,未定义”

时间:2016-03-09 20:17:18

标签: meteor

上传图片时出现此错误

match.js:38 Uncaught Error: Match error: Expected string, got undefined
check @ match.js:38
_addUrlToDatabasePI @ upload-to-amazon.js:32
(anonymous function) @ upload-to-amazon.js:108
(anonymous function) @ edgee_slingshot.js:375

如果没有弄错的话,它与我在_addUrlToDatabasePI方法中使用check的方式有关。这是我的方法

let _addUrlToDatabasePI = ( url ) => {
  check(url, String);
  var previewImageURL = Session.get("previewImageURL");
  previewImageURL = url;
  Session.set("previewImageURL", previewImageURL);
  console.log("Test" + " " + Session.get("previewImageURL"));
  _afterUploadingPI();
};

uploader与弹弓方法一起使用,将在Amazon S3中上传图像,

var uploader

      if (config === '1') {
          uploader = new Slingshot.Upload( "uploadToAmazonS3Cg1" );
      } 
      if (config === '2') {
          uploader = new Slingshot.Upload( "uploadToAmazonS3Cg2" );
      }
      if (config === '3') {
          uploader = new Slingshot.Upload( "uploadToAmazonS3Cg3" );
      }

这里是如何使用_addUrlToDatabasePI函数,它是在客户端,

uploader.send( file, ( error, url ) => {
    if ( error ) {
      Bert.alert( error.message, "warning" );
      _setPlaceholderText();
    } 
    if (config === '1'){
      _addUrlToDatabasePI( url );
    }
    if (config === '2') {
      _addUrlToDatabaseSS( url )
    }
    if (config === '3') {
      _addUrlToDatabaseZip (url )
    }
  });
};

它很奇怪,因为它曾经工作,我可以上传没有错误的文件,它突然出现。我昨天关闭了我的笔记本电脑,今天我试图测试它。这是工作。这很奇怪!!

知道什么可能导致错误吗?

1 个答案:

答案 0 :(得分:1)

uploader.send异步工作,因此url在其回调中不会立即可用。你应该首先检查它的存在:

uploader.send( file, ( error, url ) => {
    if ( error ) {
      Bert.alert( error.message, "warning" );
      _setPlaceholderText();
    }
    if ( url ) { // check that url has returned
        if (config === '1'){
          _addUrlToDatabasePI( url );
        }
        if (config === '2') {
          _addUrlToDatabaseSS( url )
        }
        if (config === '3') {
          _addUrlToDatabaseZip (url )
        }
    }
  });
};