如何解决'ERROR TypeError: 对象(...)不是一个函数"? a fileChooser.open()

问题描述 投票:0回答:1

我正在创建一个新的应用程序 ionic, 我想把 pdf 文件发送到 Laravel API. 我正在尝试为ionic实现文件选择器, 但当我尝试上传文件时, 在FileChooser处显示错误的 "Object(...)is not a function". 但是当我尝试上传文件的时候,在FileChooser.open处显示了 "Object(...)is not a function "的错误. 我试了很多方法,但都没有用,这是我的fill.ts:"Object(...)is not a function"。

这是我的 fill.ts。

import {
  Component
} from '@angular/core';
import {
  IonicPage,
  NavController,
  NavParams
} from 'ionic-angular';
import {
  ComplaintProvider
} from '../../providers/complaint/complaint';
import {
  FileTransfer,
  FileTransferObject,
  FileUploadOptions
} from '@ionic-native/file- 
transfer / ngx ';
import {
  FileChooser
} from '@ionic-native/file-chooser/ngx';
import {
  File
} from '@ionic-native/file/ngx';
import {
  FilePath
} from '@ionic-native/file-path/ngx';
@IonicPage()
@Component({
  selector: 'page-fill',
  templateUrl: 'fill.html',
})
export class FillPage {

  myRec = {
    type: '',
    project: '',
    description: '',

  }
  myFile = {
    file: ''
  }
  mood: any;
  project: any;
  uploadText: any;
  downloadText: any;
  fileTransfer: FileTransferObject;
  constructor(public navCtrl: NavController, public navParams: NavParams, public complaint: ComplaintProvider, public transfer: FileTransfer, public file: File, public filePath: FilePath, public fileChooser: FileChooser) {
    this.complaint.Type().then((data) => {
      //    console.log(JSON.stringify(data))
      this.mood = data["type"];
    })
    this.complaint.Project().then((data) => {
      //   console.log(JSON.stringify(data))
      this.project = data["projects"];
    })
    this.uploadText = "";
    this.downloadText = "";
  }

  uploadFile() {
    this.fileChooser.open().then((uri) => {
      this.filePath.resolveNativePath(uri).then((nativepath) => {
        this.fileTransfer = this.transfer.create();
        let options: FileUploadOptions = {
          fileKey: "pdf",
          fileName: "file.pdf",
          chunkedMode: false,
          headers: {},
          mimeType: 'pdf'
        }
        this.uploadText = "uploading .....";
        this.fileTransfer.upload(nativepath, 'url', options).then((data) => {
          alert("transfer done=" + JSON.stringify(data));
          this.uploadText = "";

        }, (err) => {
          this.uploadText = ""
        })
      }, (err) => {
        alert(JSON.stringify(err))
      })
    }, (err) => {
      alert(JSON.stringify(err));
    })
  }

this app. modules. ts:

import {
  NgModule,
  ErrorHandler
} from '@angular/core';
import {
  BrowserModule
} from '@angular/platform-browser';
import {
  IonicApp,
  IonicModule,
  IonicErrorHandler
} from 'ionic-angular';
import {
  MyApp
} from './app.component';
import {
  IonicStorageModule
} from '@ionic/storage';
import {
  AboutPage
} from '../pages/about/about';
import {
  ContactPage
} from '../pages/contact/contact';
import {
  HomePage
} from '../pages/home/home';
import {
  TabsPage
} from '../pages/tabs/tabs';
import {
  LoginPage
} from '../pages/login/login';
import {
  FillPage
} from '../pages/fill/fill';
import {
  AddPage
} from '../pages/add/add';
import {
  AuthProvider
} from '../providers/auth/auth';
import {
  StatusBar
} from '@ionic-native/status-bar';
import {
  SplashScreen
} from '@ionic-native/splash-screen';
import {
  HttpModule
} from '@angular/http';
import {
  ComplaintProvider
} from '../providers/complaint/complaint';
import {
  FileTransfer
} from '@ionic-native/file-transfer/ngx';
import {
  FileChooser
} from '@ionic-native/file-chooser/ngx';
import {
  File
} from '@ionic-native/file/ngx';
import {
  FilePath
} from '@ionic-native/file-path/ngx';
@NgModule({
  declarations: [
    MyApp,
    AboutPage,
    ContactPage,
    HomePage,
    TabsPage,
    LoginPage,
    FillPage,

    AddPage
  ],
  imports: [
    BrowserModule,
    IonicModule.forRoot(MyApp),
    IonicStorageModule.forRoot(),
    HttpModule
  ],
  bootstrap: [IonicApp],
  entryComponents: [
    MyApp,
    AboutPage,
    ContactPage,
    HomePage,
    TabsPage,
    LoginPage,
    FillPage,
    AddPage
  ],
  providers: [
    StatusBar,
    SplashScreen,
    AuthProvider,
    FileTransfer,
    FileChooser,
    File,
    FilePath,
    ComplaintProvider,
    {
      provide: ErrorHandler,
      useClass: IonicErrorHandler
    },
  ]
})
export class AppModule {}
angular typescript ionic-framework ionic4
1个回答
0
投票

你能不能试着把导入语句从以下地方修改一下?

import {FileChooser} from '@ionic-native/file-chooser/ngx';

import FileChooser from '@ionic-native/file-chooser/ngx';

我正面临着类似的问题与另一个离子插件. 它的一个野生的猜测.

© www.soinside.com 2019 - 2024. All rights reserved.