# ERROR TypeError: Object(...) is not a function

**URL:** <https://forum.ionicframework.com/t/error-typeerror-object-is-not-a-function/154554>\
**Category:** Ionic Native\
**Created:** [January 29, 2019, 10:39am UTC](https://forum.ionicframework.com/t/error-typeerror-object-is-not-a-function/154554 "2019-01-29T10:39:38Z")\
**Posts on this page:** 11\
**Page:** 1

<div class="post-metadata">

**Author:** ![Elgenidi](https://avatars.discourse-cdn.com/v4/letter/e/ac91a4/32.png) [@Elgenidi](https://forum.ionicframework.com/u/Elgenidi)\
**Post date:** [January 29, 2019, 10:39am UTC](https://forum.ionicframework.com/t/error-typeerror-object-is-not-a-function/154554/1 "2019-01-29T10:39:38Z")

</div>

**When I install any ionic-native plugin this error appears especially with @ionic-native/media-capture @ionic-native/media @ionic-native/file**

 ![erroe](https://global.discourse-cdn.com/ionicframework/original/3X/e/2/e24bcca26d38afd6399260da001d1b91890ae257.png)

```auto
App Module.ts

import { BrowserModule } from '@angular/platform-browser';
import { ErrorHandler, NgModule } from '@angular/core';
import { IonicApp, IonicErrorHandler, IonicModule } from 'ionic-angular';
import { SplashScreen } from '@ionic-native/splash-screen';
import { StatusBar } from '@ionic-native/status-bar';

import { MyApp } from './app.component';
import { HomePage } from '../pages/home/home';

import { MediaCapture } from '@ionic-native/media-capture/ngx';
import { Media } from '@ionic-native/media/ngx';
import { File } from '@ionic-native/file/ngx';

import { IonicStorageModule } from '@ionic/storage';

@NgModule({
  declarations: [
    MyApp,
    HomePage
  ],
  imports: [
    BrowserModule,
    IonicModule.forRoot(MyApp),
    IonicStorageModule.forRoot()
  ],
  bootstrap: [IonicApp],
  entryComponents: [
    MyApp,
    HomePage
  ],
  providers: [
    StatusBar,
    SplashScreen,
    {provide: ErrorHandler, useClass: IonicErrorHandler},
    MediaCapture,
    Media,
    File
  ]
})
export class AppModule {}

```

home page ts

```auto
import { Component , ViewChild } from '@angular/core';
import { NavController } from 'ionic-angular';

import { MediaCapture, MediaFile, CaptureError, CaptureVideoOptions } from '@ionic-native/media-capture/ngx';
import { Storage } from '@ionic/storage';
import { Media, MediaObject } from '@ionic-native/media/ngx';
import { File } from '@ionic-native/file/ngx'

const MEDIA_FILES_KEY = 'mediaFiles';

@Component({
  selector: 'page-home',
  templateUrl: 'home.html'
})
export class HomePage {

  mediaFiles = [];
  @ViewChild('myvideo') myVideo: any;

  constructor(public navCtrl: NavController, private mediaCapture: MediaCapture, private storage: Storage, private file: File, private media: Media) {

  }

  ionViewDidLoad() {
    this.storage.get(MEDIA_FILES_KEY).then(res => {
      this.mediaFiles = JSON.parse(res) || [];
    })
  }
 
  captureAudio() {
    this.mediaCapture.captureAudio().then(res => {
      this.storeMediaFiles(res);
    }, (err: CaptureError) => console.error(err));
  }
 
  captureVideo() {
    let options: CaptureVideoOptions = {
      limit: 1,
      duration: 30
    }
    this.mediaCapture.captureVideo(options).then((res: MediaFile[]) => {
      let capturedFile = res[0];
      let fileName = capturedFile.name;
      let dir = capturedFile['localURL'].split('/');
      dir.pop();
      let fromDirectory = dir.join('/');      
      var toDirectory = this.file.dataDirectory;
      
      this.file.copyFile(fromDirectory , fileName , toDirectory , fileName).then((res) => {
        this.storeMediaFiles([{name: fileName, size: capturedFile.size}]);
      },err => {
        console.log('err: ', err);
      });
          },
    (err: CaptureError) => console.error(err));
  }
 
  play(myFile) {
    if (myFile.name.indexOf('.wav') > -1) {
      const audioFile: MediaObject = this.media.create(myFile.localURL);
      audioFile.play();
    } else {
      let path = this.file.dataDirectory + myFile.name;
      let url = path.replace(/^file:\/\//, '');
      let video = this.myVideo.nativeElement;
      video.src = url;
      video.play();
    }
  }
 
  storeMediaFiles(files) {
    this.storage.get(MEDIA_FILES_KEY).then(res => {
      if (res) {
        let arr = JSON.parse(res);
        arr = arr.concat(files);
        this.storage.set(MEDIA_FILES_KEY, JSON.stringify(arr));
      } else {
        this.storage.set(MEDIA_FILES_KEY, JSON.stringify(files))
      }
      this.mediaFiles = this.mediaFiles.concat(files);
    })
  }

}

```

home HTML

```auto
<ion-header>
  <ion-navbar>
    <ion-title>
      Ionic Sound Recorder
    </ion-title>
  </ion-navbar>
</ion-header>

<ion-content >
  <ion-row>
    <ion-col>
      <button ion-button full (click)="captureAudio()">Capture Audio</button>
    </ion-col>
    <ion-col>
      <button ion-button full (click)="captureVideo()">Capture Video</button>
    </ion-col>
  </ion-row>
 
  <ion-list>
    <ion-item *ngFor="let file of mediaFiles" tappable (click)="play(file)" text-wrap>
      {{ file.name }}
      <p>{{ file.size / 1000 / 1000 | number }} MB</p>
    </ion-item>
  </ion-list>
 
  <video controls autoplay #myvideo>
  </video>
</ion-content>

```

---

<div class="post-metadata">

**Author:** ![samsep10l](https://avatars.discourse-cdn.com/v4/letter/s/5f8ce5/32.png) [@samsep10l](https://forum.ionicframework.com/u/samsep10l)\
**Post date:** [January 29, 2019, 2:43pm UTC](https://forum.ionicframework.com/t/error-typeerror-object-is-not-a-function/154554/2 "2019-01-29T14:43:45Z")

</div>

I’m facing the same issue. I fixed it as follows:  
Instead of importing from ‘pluginName/ngx’ import from ‘pluginName’  
so in your case:

`import { File } from '@ionic-native/file';`

Then, downgrade the Native plugin to a version which works. For me, I was using the geolocation plugin and the last version which worked is ^4.12.0 in my package.json

If the Ionic team is reading this, is there any better solution for this? This happens in Ionic 3

---

<div class="post-metadata">

**Author:** ![Elgenidi](https://avatars.discourse-cdn.com/v4/letter/e/ac91a4/32.png) [@Elgenidi](https://forum.ionicframework.com/u/Elgenidi)\
**Post date:** [January 30, 2019, 6:27am UTC](https://forum.ionicframework.com/t/error-typeerror-object-is-not-a-function/154554/3 "2019-01-30T06:27:40Z")

</div>

I have tried many published solutions but unfortunately, the problem still exists:sweat:

---

<div class="post-metadata">

**Author:** ![test-nikko](https://sea1.discourse-cdn.com/ionicframework/user_avatar/forum.ionicframework.com/test-nikko/32/127979_2.png) [@test-nikko](https://forum.ionicframework.com/u/test-nikko)\
**Post date:** [January 30, 2019, 6:33am UTC](https://forum.ionicframework.com/t/error-typeerror-object-is-not-a-function/154554/4 "2019-01-30T06:33:03Z")

</div>

Try

```auto
import { File } from '@ionic-native/ngx/file';

```

---

<div class="post-metadata">

**Author:** ![Elgenidi](https://avatars.discourse-cdn.com/v4/letter/e/ac91a4/32.png) [@Elgenidi](https://forum.ionicframework.com/u/Elgenidi)\
**Post date:** [January 30, 2019, 6:45am UTC](https://forum.ionicframework.com/t/error-typeerror-object-is-not-a-function/154554/5 "2019-01-30T06:45:09Z")

</div>

Unfortunately, this solution did not succeed , But thank you so much for your help

---

<div class="post-metadata">

**Author:** ![Elgenidi](https://avatars.discourse-cdn.com/v4/letter/e/ac91a4/32.png) [@Elgenidi](https://forum.ionicframework.com/u/Elgenidi)\
**Post date:** [January 30, 2019, 7:26am UTC](https://forum.ionicframework.com/t/error-typeerror-object-is-not-a-function/154554/6 "2019-01-30T07:26:19Z")

</div>

It did not work either 😓

---

<div class="post-metadata">

**Author:** ![muthukumar02](https://avatars.discourse-cdn.com/v4/letter/m/7cd45c/32.png) [@muthukumar02](https://forum.ionicframework.com/u/muthukumar02)\
**Post date:** [January 30, 2019, 9:00am UTC](https://forum.ionicframework.com/t/error-typeerror-object-is-not-a-function/154554/7 "2019-01-30T09:00:05Z")

</div>

I was facing the same issue , because of update of ionic 4 compatible plugin in @ionic-native github repo. You need to install older version using : npm install --save @ionic-native/plugin\_of\_your\_choice@4.20.0

Remember - don’t play with the number after @ , go to the repo and check for versions, and install accordingly. I

I was facing the same issue, and it stopped after i followed the above mentioned solution. You can also see [https://stackoverflow.com/questions/54361396/ionic-3-error-install-native-plugin-after-ionic-4-release](https://stackoverflow.com/questions/54361396/ionic-3-error-install-native-plugin-after-ionic-4-release)

---

<div class="post-metadata">

**Author:** ![Elgenidi](https://avatars.discourse-cdn.com/v4/letter/e/ac91a4/32.png) [@Elgenidi](https://forum.ionicframework.com/u/Elgenidi)\
**Post date:** [January 30, 2019, 9:04am UTC](https://forum.ionicframework.com/t/error-typeerror-object-is-not-a-function/154554/8 "2019-01-30T09:04:43Z")

</div>

What steps should I follow now to solve the problem?

---

<div class="post-metadata">

**Author:** ![muthukumar02](https://avatars.discourse-cdn.com/v4/letter/m/7cd45c/32.png) [@muthukumar02](https://forum.ionicframework.com/u/muthukumar02)\
**Post date:** [January 30, 2019, 9:10am UTC](https://forum.ionicframework.com/t/error-typeerror-object-is-not-a-function/154554/9 "2019-01-30T09:10:34Z")

</div>

Try To Find … Second Last Previous Version of Plugin & Append While Adding Plugin

```auto
npm install @ionic-native/native-storage@4.19.0

```

Here… Latest Version is 5.0.0 So Add @4.19.0 Please Don’t Make Assumption Based On  
Number Go In Repo or npm link try to find our previous version then append.

Then do your All Step Regularly.

Thanks

---

<div class="post-metadata">

**Author:** ![Elgenidi](https://avatars.discourse-cdn.com/v4/letter/e/ac91a4/32.png) [@Elgenidi](https://forum.ionicframework.com/u/Elgenidi)\
**Post date:** [January 30, 2019, 10:08am UTC](https://forum.ionicframework.com/t/error-typeerror-object-is-not-a-function/154554/10 "2019-01-30T10:08:25Z")

</div>

Thank you very much I have updated everything to the latest version (ionic CLI, node, angular)  
And I call every plugin after update with /ngx  
like :  
import { MediaCapture } from '@ionic-native/media-capture to import { MediaCapture } from '@ionic-native/media-capture/ngx  
import { Media } from '@ionic-native/media; to import { Media } from ‘@ionic-native/media/ngx’;  
import { File } from ‘@ionic-native/file’ ; to import { File } from ‘@ionic-native/file/ngx’

Finally, it worked with me  
Thanks

---

<div class="post-metadata">

**Author:** ![vitorcaosdeveloper](https://sea1.discourse-cdn.com/ionicframework/user_avatar/forum.ionicframework.com/vitorcaosdeveloper/32/126860_2.png) [@vitorcaosdeveloper](https://forum.ionicframework.com/u/vitorcaosdeveloper)\
**Post date:** [August 7, 2019, 8:19pm UTC](https://forum.ionicframework.com/t/error-typeerror-object-is-not-a-function/154554/11 "2019-08-07T20:19:38Z")

</div>

Agora eu estou com esse mesmo problema, alguem pode ajudar ?
