如果没有“ new”,则无法调用Nativescript类构造函数Observable

时间:2020-11-08 07:27:10

标签: angularjs typescript nativescript

我正在尝试使用本机脚本上传多部分表单,并且正在使用http-background。我不断收到错误,如果没有'new',则无法调用Class构造函数Observable。我试过将compileOptions目标更改为es5和es2017,但没有任何更改。

Here's the entire error I'm seeing

这是我从组件中获得的所有代码。

  onSave(){
    console.log("clicked")
    this.proccessImageUpload(this.file);
  }



public onSelectSingleTap() {
  this.isSingleMode = true;

  let context = imagepicker.create({
      mode: "single"
  });
  this.startSelection(context);
}

private startSelection(context) {
  let that = this;

  context
  .authorize()
  .then(() => {
      that.imageAssets = [];
      that.imageSrc = null;
      return context.present();
  })
  .then((selection) => {
     console.log("Selection done: " + JSON.stringify(selection));
     this.file = selection[0]._android;    
    
     
    
      that.imageSrc = that.isSingleMode && selection.length > 0 ? selection[0] : null;

      // set the images to be loaded from the assets with optimal sizes (optimize memory usage)
      selection.forEach(function (element) {
          element.options.width = that.isSingleMode ? that.previewSize : that.thumbSize;
          element.options.height = that.isSingleMode ? that.previewSize : that.thumbSize;
      });

      that.imageAssets = selection;
  }).catch(function (e) {
      console.log(e);
  });
}

  // proccess image function
proccessImageUpload(fileUri) {
  var backgroundHttp  = require("nativescript-background-http");
  return new Promise((resolve, reject) => {
      // body...
      var request = {
          url: 'http://192.168.0.2:4000/api/posts',
          method: "POST",
          headers: {
              "Content-Type": "application/octet-stream",
              "user_id": "<user_id>"
          },
          description: 'Uploading profile image..',
          androidAutoDeleteAfterUpload: false,
          androidNotificationTitle: 'Profile image'
      }

      var params = [
        { name: "title", value: "test" },
        { name: "content", value: "test" },
        { name: "fileToUpload", filename: fileUri, mimeType: "image/jpeg" }
     ];

     var backgroundSession = backgroundHttp.session('image-upload');
     var task = backgroundSession.uploadFile(fileUri, request);

      task.on("progress", (e) => {
          // console log data
          console.log(`uploading... ${e.currentBytes} / ${e.totalBytes}`);
      });

      task.on("error", (e) => {
          // console log data
          console.log(`Error processing upload ${e.responseCode} code.`);
          reject(`Error uploading image!`);
      });

      task.on("responded", (e) => {
          // console log data
          console.log(`received ${e.responseCode} code. Server sent: ${e.data}`);
          // var uploaded_response = JSON.parse(e.data);
      });

      task.on("complete", (e) => {
          // console log data
          console.log(`upload complete!`);
          console.log(`received ${e.responseCode} code`);
          // console.log(e.data);
      })

      resolve(task);
  });
}

我知道问题出在这行。

var task = backgroundSession.uploadFile(fileUri, request);

任何帮助将不胜感激!

3 个答案:

答案 0 :(得分:0)

我可以通过安装tns版本6来使其正常工作。

答案 1 :(得分:0)

我有完全一样的问题。我是从slack.com获得这个的,赞扬Chris Vietor “ tns插件添加nativescript-background-http”可用于nativescript 6。 “ tns插件添加@ nativescript / background-http”可用于nativescript 7。

答案 2 :(得分:0)

如果使用 nativescript-background-http 插件

,则使用旧版本

您必须安装最新版本

tns plugin add @nativescript/background-http