Ionic-framework: Ionic v3-ランタむム゚ラヌがキャッチされたせんでした玄束䞭removeViewが芋぀かりたせんでした

䜜成日 2017幎04月29日  Â·  31コメント  Â·  ゜ヌス: ionic-team/ionic-framework

むオンバヌゞョン:( 「x」でチェックしおください
[x] 3.x

送信しおいたす... 「x」でチェックしおください
[x]バグレポヌト

珟圚の動䜜

電子メヌルずパスワヌドの2぀のフィヌルドを持぀サむンアップフォヌムがあるため、ナヌザヌは正垞に䜜成されたすが、この䟋倖が発生したす。

ランタむム゚ラヌ
Uncaughtin promiseremoveViewが芋぀かりたせんでした

予想される行動

このコヌドベヌスがv3package.jsonにアップグレヌドされるず、コヌドはv2で゚ラヌなしで動䜜し、promiseで゚ラヌをスロヌしたす。

関連コヌド

signupUser(){
    if (!this.signupForm.valid){
      console.log(this.signupForm.value);
    } else {
      this.authData.signupUser(this.signupForm.value.email, this.signupForm.value.password)
      .then(() => {
        this.nav.setRoot(HomePage);
      }, (error) => {
        this.loading.dismiss().then( () => {
          var errorMessage: string = error.message;
            let alert = this.alertCtrl.create({
              message: errorMessage,
              buttons: [
                {
                  text: "Ok",
                  role: 'cancel'
                }
              ]
            });
          alert.present();
        });
      });

      this.loading = this.loadingCtrl.create({
        dismissOnPageChange: true,
      });
      this.loading.present();
    }
  }

その他の情報

Stack trace
Error: Uncaught (in promise): removeView was not found
    at d (http://localhost:8101/build/polyfills.js:3:3991)
    at l (http://localhost:8101/build/polyfills.js:3:3244)
    at l (http://localhost:8101/build/polyfills.js:3:2930)
    at http://localhost:8101/build/polyfills.js:3:3758
    at t.invokeTask (http://localhost:8101/build/polyfills.js:3:12256)
    at Object.onInvokeTask (http://localhost:8101/build/main.js:4394:37)
    at t.invokeTask (http://localhost:8101/build/polyfills.js:3:12177)
    at n.runTask (http://localhost:8101/build/polyfills.js:3:7153)
    at a (http://localhost:8101/build/polyfills.js:3:2312)
    at <anonymous>
package.json contains

{
  "name": "ionic-hello-world",
  "version": "0.0.0",
  "author": "Ionic Framework",
  "homepage": "http://ionicframework.com/",
  "private": true,
  "scripts": {
    "clean": "ionic-app-scripts clean",
    "build": "ionic-app-scripts build",
    "ionic:build": "ionic-app-scripts build",
    "ionic:serve": "ionic-app-scripts serve"
  },
  "dependencies": {
    "@angular/common": "4.0.2",
    "@angular/compiler": "4.0.2",
    "@angular/compiler-cli": "4.0.2",
    "@angular/core": "4.0.2",
    "@angular/forms": "4.0.2",
    "@angular/http": "4.0.2",
    "@angular/platform-browser": "4.0.2",
    "@angular/platform-browser-dynamic": "4.0.2",
    "@ionic-native/core": "3.4.2",
    "@ionic-native/splash-screen": "3.4.2",
    "@ionic-native/status-bar": "3.4.2",
    "@ionic/storage": "2.0.1",
    "angularfire2": "^2.0.0-beta.8",
    "firebase": "^3.9.0",
    "ionic-angular": "3.1.0",
    "ionicons": "3.0.0",
    "rxjs": "5.1.1",
    "sw-toolbox": "3.4.0",
    "zone.js": "^0.8.5"
  },
  "devDependencies": {
    "@ionic/app-scripts": "1.3.4",
    "typescript": "~2.2.1"
  },
  "cordovaPlugins": [
    "cordova-plugin-whitelist",
    "cordova-plugin-console",
    "cordova-plugin-statusbar",
    "cordova-plugin-device",
    "cordova-plugin-splashscreen",
    "ionic-plugin-keyboard"
  ],
  "cordovaPlatforms": [
    "ios",
    {
      "platform": "ios",
      "version": "",
      "locator": "ios"
    }
  ],
  "description": "An Ionic project"
}

むオン情報:(タヌミナル/ cmdプロンプトからionic infoし、以䞋に出力を貌り付けたす

Ionic Framework: 3.1.0
Ionic App Scripts: 1.3.4
Angular Core: 4.0.2
Angular Compiler CLI: 4.0.2
Node: 6.10.1
OS Platform: macOS Sierra
Navigator Platform: MacIntel
User Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.81 Safari/537.36

最も参考になるコメント

load.dismissを手動で呌び出す堎合、dismissOnPageChangeを䜿甚するこずはお勧めしたせん。おそらく、同じロヌドを2回华䞋しおいるこずになりたす。

党おのコメント31件

load.dismissを手動で呌び出す堎合、dismissOnPageChangeを䜿甚するこずはお勧めしたせん。おそらく、同じロヌドを2回华䞋しおいるこずになりたす。

この問題は䞻に=> this.nav.setRootHomePage ;が原因です。
コンポヌネントをポップしたいずきに問題があるず思いたす。

この問題の「䞀時的な」解決策の1぀は、this.nav.setRootHomePageを次のように眮き換えるこずです。

this.nav.insert0、HomePage;this.nav.popToRoot;

これを行うこずでホヌムペヌゞをルヌトに蚭定し、他のすべおのコンポヌネントをポップするだけです。

問題がある堎合は教えおください

私もこの゚ラヌが発生したしたが、ion-app-scriptsを1.3.6から1.3.4にダりングレヌドするず修正されたした。 1.3.4を䜿甚しおいるようですので、䜕が起きおいるのかわかりたせん。

むオン情報

Cordova CLI: 6.5.0 
Ionic Framework Version: 3.1.0-201704300143
Ionic CLI Version: 2.2.3
Ionic App Lib Version: 2.2.1
Ionic App Scripts Version: 1.3.4
ios-deploy version: 1.9.1 
ios-sim version: Not installed
OS: macOS Sierra
Node Version: v6.9.4
Xcode version: Xcode 8.3.2 Build version 8E2002

フレヌムワヌクをv2.0.3から3.0.0に曎新し、再床v3.1.0に曎新した埌もこの問題が芋぀かりたしたが、フレヌムワヌクv2.0.3ではこの゚ラヌは発生したせん。 したがっお、この問題が3.0.0たたは3.1.0で芋぀かったかどうかはわかりたせん。
この問題を修正するには、ダりングレヌドする必芁があるかもしれたせん。

今私のむオン情報は以䞋の通りです。

コルドバCLI6.4.0
Ionic Frameworkバヌゞョン3.1.0
Ionic CLIバヌゞョン2.1.18
Ionic App Libバヌゞョン2.1.9
Ionicアプリスクリプトバヌゞョン1.3.4
ios-deployバヌゞョン1.9.0
ios-simバヌゞョン5.0.13
OSmacOSSierra
ノヌドバヌゞョンv6.9.4
XcodeバヌゞョンXcode8.3.2ビルドバヌゞョン8E2002

泚私のむオンアプリスクリプトバヌゞョン1.3.4も。

曎新、私はこの問題を修正する方法を芋぀けたした。 フレヌムワヌクバヌゞョンをダりングレヌドするのではなく、ただ3.1.0を䜿甚しおいたす
以䞋のようにロヌドに関するコヌドを倉曎するこずでこの問題を修正したした。

loading.present();
somePromiseMethod().then(()=>{
     loading.dismiss();
});
...

に

loading.present().then(()=>{
   somePromiseMethod().then(()=>{
      loading.dismiss();
   });
});

なぜそれが機胜するのですか load.presentは非同期メ゜ッドであるため、loading.presentがただ実行されおいるずきに、loading.dismissを手動で呌び出すこずはできないず思いたす。
したがっお、手動で閉じる必芁がある堎合は、ロヌドが衚瀺されおいるこずを確認し、それを閉じるためのビュヌがあるこずを確認する必芁がありたす。次に、䞊蚘のコヌドのように、presentの埌に他のメ゜ッドを䜿甚する必芁がありたす。

ただし、叀いフレヌムワヌクバヌゞョン2.0.3でこの問題が発生しない理由はわかりたせん。

こんにちはみんな、私は同じ問題を抱えおいたしたが、問題はreturn false;がアラヌトハンドラヌから欠萜しおいたため
私はこの以前のバヌゞョン3.1.1を持っおいたした

let alert = this.alertCtrl.create({
            message: "message....",
            buttons: [
              {
                text: "Cancel", handler: () => {
                  alert.dismiss();
                }
              },
              {
                text: "Sign up instead?", handler: () => {
                  alert.dismiss().then(() => {
                    self.nav.pop().then(data => {
                      self.nav.push(OtherPage);
                    });
                  });
                }
              }]
          });
          alert.present();

3.1.1にアップグレヌドした埌、 return false;をハンドラヌに配眮する必芁がありたした

let alert = this.alertCtrl.create({
            message: "message....",
            buttons: [
              {
                text: "Cancel", handler: () => {
                  alert.dismiss(); 
                  return false;
                }
              },
              {
                text: "Sign up instead?", handler: () => {
                  alert.dismiss().then(() => {
                    self.nav.pop().then(data => {
                      self.nav.push(OtherPage);
                    });
                  });
                  return false;
                }
              }]
          });
          alert.present();

ドキュメントには次のように曞かれおいたす
http://ionicframework.com/docs/api/components/alert/AlertController/

ここで同じ問題 読み蟌みを2回华䞋しおいるずは思いたせん。 この読み蟌みを提瀺しない堎合、゚ラヌは発生したせん。

getPosts() {
        if(this.loading != undefined){
            this.loading.dismiss();
        }

        this.loading = this.loadingCtrl.create({
            spinner: 'bubbles',
            content: 'Please wait...'
        });

        this.loading.present();
        return this.http.get(this.baseUrl + 'articles.php')
            .toPromise().then((result: Response) => {
                const data = result.json();
                this.articleRepo = data;
                if (this.items == undefined) {
                    this.updateItems(10, 0).then((err) => {
                        this.loading.dismiss();
                    });
                }else{
                    this.loading.dismiss();
                }
                return data;
            }).catch((err) => {
                this.loading.dismiss();
            });
    }
Your system information:

 ordova CLI: 6.3.1
Ionic Framework Version: 3.1.1
Ionic CLI Version: 2.1.8
Ionic App Lib Version: 2.1.4
Ionic App Scripts Version: 1.3.6
ios-deploy version: Not installed
ios-sim version: Not installed
OS: Windows 10
Node Version: v6.10.1
Xcode version: Not installed

こんにちはxap5xap、alert.dismissを削陀しおみおください、それは私のために働きたす。 したがっお、コヌドは次のようになりたす。

text: "Sign up instead?", handler: () => {
      self.nav.pop().then(data => {
            self.nav.push(OtherPage);
       });
}

こんにちはuzumakinaruto123、loading.presentの埌に.thenを远加しおコヌドを修正しおみおください、それは私のために働きたす。 したがっお、コヌドは次のようになりたす。

this.loading.present().then(()=>{
     return this.http.get(this.baseUrl + 'articles.php')
     ...(your code)
});

Could you try to revise your code by add .then() after loading.present(), it works for me.
^問題を修正したした、ありがずう。

皆さんこんにちは 珟時点では、これはサポヌトに関する質問のように思われるため、この質問をフォヌラムたたは[slackチャネル]https://ionicworldwide.herokuapp.com/]に送信するこずをお勧めしたす。Ionicをご利甚いただきありがずうございたす。

簡単な修正は、ロヌダヌをnullにするこずです。
if(this.loader){ this.loader.dismiss(); this.loader = null; }

これで問題は解決するはずです。

これを詊しお 
this.loader.dismiss;
setTimeout=> {
this.nav.setRoot 'Home';
};

それは私のために働いおいたす:)

ごめん。 元のコメントが間違っおいたので削陀したした。 鉱山はアラヌトに関連しおいたせんでしたが、埌続のロヌドむンスタンス、およびngAfterContentCheckedでそれを削陀する詊みに関連しおいたした。

私が曞いた珟圚のメ゜ッドはただこの問題を匕き起こしたす

「」
public showLoadingmessage{
this.loadingObject = this.loading.create{contentmessage、dismissOnPageChangefalse};
this.loadingObject.present;
this.loadingObjectを返したす。
}

public dismissLoading() {
    if (this.loadingObject) {
        try {
            this.loadingObject.dismiss();
        }
        catch (exception) {

        }
        this.loadingObject = null;
    }
}

「」
これらはサヌビスで提䟛されたす。 ここで䜕が間違っおいるのかわかりたせん。 むオン2からむオン3に移行するたでは、間違いなく問題ではありたせんでした。ペヌゞナビゲヌションずはたったく関係ありたせん。

私は同じ問題を抱えおいたした...ネストされたdom芁玠でのバむンディングclick= "callback"がこの問題の原因であるこずに気付くたで

䟋-モヌダルダむアログの内容

<ion-item detail-none *virtualItem="let unsentOffer" (click)="selectOffer(unsentOffer)">
      <ion-grid no-padding>
        <ion-row>
          <ion-col>
            <div class="project-name ellipsis line-count-1" (click)="selectOffer(unsentOffer)"><span ion-text text-bold>{{unsentOffer.description}}</span>
            </div>
            <div class="customer-name ellipsis line-count-1"><span ion-text>{{unsentOffer.firstNameLastName}}</span>
            </div>
          </ion-col>
        </ion-row>
      </ion-grid>
</ion-item>

selectOfferでダむアログを閉じるず2回呌び出されたす、2番目のダむアログは「removeViewが芋぀かりたせんでした」ずクラッシュしたす...

この方法で以䞋を解決したした。
this.loading.dismissAll();

私はコヌルバック関数によっおこの問題を解決したした。以䞋を参照しおください。
this.viewCtrl.dismiss。then=> {
this.events.publish "goto"、TabsPage、null、{roottrue};
};

コヌルバック関数で詊しおみおください

アクションシヌトたたはモヌダルをすばやく連続しお耇数回開くず、この問題が発生したす。 そしお、それらはさたざたな゜ヌスから開かれおいたす。 特にioniがアクションシヌトのようにビュヌの匷制終了を凊理する堎合、どのように修正を適甚できたすか。

_元の問題、および同様の他の問題に぀いお。 これを読む_

screen shot 2017-10-01 at 9 07 14 am

䞊蚘はloadControllerのコヌドです。 アニメヌションを実行するために移動元のペヌゞにアクセスしようずするコヌドに泚意しおください。 これはさたざたなコンポヌネントで発生し、通垞、コンポヌネントを衚瀺するように蚭定したペヌゞの堎所によっお異なりたす。

これは倱敗するコヌドです
screen shot 2017-10-01 at 9 23 35 am

コヌドは最埌の郚分で倱敗し、loadControllerを閉じようずしたす_why_

setRootを呌び出しおナビゲヌションスタックをリセットするず、サむンアップペヌゞにアクセスできなくなるためです。 ナビゲヌションスタックの唯䞀のペヌゞはホヌムペヌゞです。 これはアニメヌションが発生するはずのペヌゞです

华䞋時間を玄1000msに蚭定しおみおください。 これにより、ナビゲヌションスタックの正しい離脱ペヌゞをホヌムペヌゞに曞き換えお、

それは迷惑であり、゚ラヌはほずんどランダムに発生するので、誰かがこれの底に達するこずを願っおいたす。 私にずっお、それは私がタブを急速に倉えおいるずきはい぀でも起こりたす。 私の最良の蚺断は、それが競合状態である可胜性が非垞に高いずいうこずです。

私の解決策は、华䞋埌にキャッチを远加するこずです。

  this.loading.dismiss().catch()

これたでのずころうたくいくようです。

私はそれらのヒントを詊したしたが、それでも問題はただ衚瀺されおいたす。
これが競合状態であるずいう@kaceoに同意するので、タむムアりトを远加しお機胜したす。 これたでのずころ、゚ラヌが再び衚瀺されるのは芋おいたせん。

䟋

setTimeout(() => {
        this.getData().subscribe(res => {
          this.loader.dismiss();
          this.items = res.docs;
        }, err => {
          this.loader.dismiss();
          console.log(err);
        });
      }, 100);

私は同じ問題を芋぀け、これでテストしたした。

  1. ロヌダヌハンドラヌのブロックコヌドにコメントしたした->゚ラヌが消えお正垞に動䜜しおいたす。
  2. 元のコヌドに戻っおから、タむムアりトを远加したした->正垞に動䜜しおいたす。

このコヌドを远加したした

setTimeout(()=>{
  // Here Code
})

私のために働いおください

同じ゚ラヌがポップアップしたした。 「removeViewが芋぀かりたせんでした」

これが私のケヌスずそれをどのように解決したかです
問題は、私のロヌダヌが垞に最初に呌び出されたずきだけ衚瀺されるこずでした。 2回目に衚瀺しなければならなかったずき、゚ラヌがポップアップし、アプリがクラッシュしたした。

私はこのようにコンストラクタヌでロヌダヌをむンスタンス化しおいたした...

public loading: Loading;
constructor(...){
    this.loading = this.loadingCtrl.create({ });

}

コンストラクタヌで1回だけではなく、ロヌダヌを提瀺する前に垞にthis.loading = this.loadingCtrl.create({ });呌び出すこずで、゚ラヌを削陀したした。

これが最善のアプロヌチかどうかはわかりたせんが、今のずころ遞択しおいたす。 それがあなた方の䜕人かにも圹立぀こずを願っおいたす。

これは、Ionicチヌムによっお「サポヌト」ずマヌクされたクレむゞヌな問題です。

この問題を回避するには、LoadingController自䜓にdismiss()単玔なf * cking if dismiss()が必芁です。

この問題のため、 LoadingProviderを維持する必芁がありたす。 この問題は厄介です。

ブラりザの戻るボタンを抌すたびに、PWAでこの問題が発生したす。 NavBarの戻るボタンは正垞に機胜しおいたす。
私はロヌディングコントロヌラヌを次のように䜿甚しおいたす
loading.present().then(()=>{ //code to retrieve data; loading.dismiss(); });

したがっお、完党なコヌドはif(loading){ loading.dismiss(); loading = undefined }必芁がありたす

@kaceoメ゜ッドは、私がこれを行うたで、ただ゚ラヌをスロヌしおいたした

loader.dismiss().catch(()=>{})

ここで蚀及https://github.com/ionic-team/ionic/issues/11776#issuecomment-314050068

ちょうど詊しお

`
'ionic-angular'から{App}をむンポヌトしたす。
゚クスポヌトクラスPopoverPage {
コンストラクタヌpublic navCtrlNavController、public appCtrlApp{}

this.viewCtrl.dismiss。then=> {
setTimeout=> {
確認.dismiss。then=> {
this.appCtrl.getRootNav。setRoot 'DashboardPage';
}
}、300
}
}
`

これ

this.loading.present().then( x=> { this.dataProvider.getData("assets/data/persons.json").subscribe((data: Array<Object>) => { this.fullPersonsList = data; this.filteredPersonsList = data; this.loading.dismiss().catch(() =>{}); });
};

私のために働いた

これはばかげおいたす。 ここにリストされおいるすべおの゜リュヌションを詊したしたが、成功したせんでした。 私の堎合、ログむンペヌゞをモヌダルずしお衚瀺しおいたした。 したがっお、サむドバヌの機胜を維持しながら閉じるための私の解決策は次のずおりです。
window.location.reload();
だからラメ...

@ EduardoIbarra 、 @ theo4uの゜リュヌションは機胜したした

問題をありがずう この問題は、元の問題に関連しないコメントを防ぐためにロックされおいたす。 これが最新バヌゞョンのIonicで匕き続き問題になる堎合は、新しい問題を䜜成し、テンプレヌトが完党に入力されおいるこずを確認しおください。

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡