Vue: 警告メッセージ情報を改善する

作成日 2016年10月02日  ·  40コメント  ·  ソース: vuejs/vue

「VueWarn:イベントクリックのハンドラーは未定義です」と表示されます
イベントクリックに関連するどこかでエラーが発生しました。クリックイベントを含むコンポーネントが何百もあります。 どのコンポーネント/ファイルでエラーが発生しますか?

erroe

improvement

最も参考になるコメント

私はVue2を使用しています。これはバグではありません。 役に立たないエラーメッセージです。 そうですね、Vueはこれを提案として、エラーメッセージのスタイルを改善し、具体的にすることができます。 そのため、開発者が間違いを犯した場合でも、間違いがどこにあるかを正確に知ることで、短時間で修正できます。 React JSと比較すると、コンポーネント名と行番号、そしてもちろんエラーも表示されます。

私が望むのは、具体的にはエラーメッセージがあります。

全てのコメント40件

この提出された問題には、より多くの情報が必要です。 vue2またはvue1を使用していますか。
それはバグですか、それとも提案ですか? バグの場合は、jsfiddleの再現可能なリンク。
コンポーネントのいずれかにハンドラー機能がない場合、これはvueの問題にはなり得ません。

//一番

私はVue2を使用しています。これはバグではありません。 役に立たないエラーメッセージです。 そうですね、Vueはこれを提案として、エラーメッセージのスタイルを改善し、具体的にすることができます。 そのため、開発者が間違いを犯した場合でも、間違いがどこにあるかを正確に知ることで、短時間で修正できます。 React JSと比較すると、コンポーネント名と行番号、そしてもちろんエラーも表示されます。

私が望むのは、具体的にはエラーメッセージがあります。

Vueには、あまり多くのことを言わないメッセージがたくさんあります。 残念ながら、Vueの安全チェックは不足しているようです。

vueが警告にもう少し情報を追加できるかどうかを推測します-

コンポーネント名
コンポーネントタイプ
また
警告メッセージを開発環境用に構成可能にすることができます。

私たちは可能な限りコンポーネント情報を提供しようとしますが、これはおそらく見落としです。

@ just-誰も私たちが改善できるようにメッセージが欠けている具体的な例を提供してください-ただ不平を言うだけでは何も達成されません。

私は本当に不平を言っていませんでした。 それは、人々がすでに知っているようなものだと思いました。 私は過去に多くの小さなエッジケースに遭遇し、実際の問題の奇妙で説明のないメッセージを出しましたが、代わりにソースの奥深くに根ざしており、他のいくつかの問題はエラーを出さず、代わりに奇妙なレンダリングを引き起こしましたバグ。 他のものよりも追跡しやすいものもあったので、私は愚かだと思ったのでわざわざ報告しませんでしたが、特に1つは、何が悪いのかを理解するのに非常に時間がかかったため、実際にプルリクエストを作成しました

2.0.1がリリースされたので、それらの多くは修正されたと思いますが、沈黙を保つのは悪いことだと思います。 読者へのメッセージ:バグだと思われる場合は、バグではない場合でも報告してください。

@ yyx990803それでも、コンポーネントの名前キーを

:)ありがとうエヴァン

こんにちは。最近、行番号が不足しているため、特にコンポーネントが大きい場合、デバッグが非常に困難になることに気付きました。 数千行のコンポーネントがあります。 警告を受けました
"[Vue warn]:レンダリング関数のエラー:" TypeError:_vm.values [item.name] is undefined ""

コンポーネント名はありますが、Firefoxコンソールに行番号がありません。 このような場合は、行番号を指定しておくと非常に便利です。 もちろん、コンポーネントをいくつかの小さなコンポーネントに分割したり、エディターの検索でこれらすべての行を掘り下げたりすることもできますが、それは重要ではありません。

次のバージョンで行番号を追加することを検討してください。 ありがとう。

+1行番号を追加してください。

次のメッセージが届きました、

vue.js:577 [Vue警告]:レンダリングエラー: "TypeError:未定義のプロパティ 'length'を読み取れません"
(で見つかりました)。

変数== nullの場合、この構成では「variable.length」が失敗する理由がわかります。 問題は、「。length」構造が多数あることです。データは外部サービスから取得されています。

私も同じ@ ameoba32
「未定義のプロパティ '長さ'を読み取れません」があり、どこに問題があるのか​​わかりません。 大きなウェブアプリなので難しいです。
ファイルが原因で見つかったと思いますが、エラーが正確にどこにあるのかわかりません。
行が壊れているのを見つけるために、行ごとに消去する必要がありますか? xD

ここでは@ ameoba32と同じです。 @ yyx990803何かしてください。 ありがとう!

私はvueが大好きです-たくさんあり、2年間それを使っています。 RENDERエラーの特異性の欠如は、私の一番の苦情/修正要求です。 このエラーは、テンプレートまたは対応するjsコードのいずれかで発生します。 行番号は、問題がテンプレートまたはjsコードのいずれかにある場合でも、非常に役立ちます。

同じ問題がありました

はい。 私も同じ問題を抱えてる ;)

unreachable code after return statement[Więcej informacji] app.js:5248:4
unreachable code after return statement[Więcej informacji] app.js line 4957 > eval:5248:4
unreachable code after return statement[Więcej informacji] app.js:5248:4
unreachable code after return statement[Więcej informacji] app.js line 5136 > eval:5248:4

それが何を意味するのかは理解していますが、どこで修正すればよいのかわかりません。すべてのコンポーネントを調べて、これらの問題を見つけるのは大変な作業です。

screen shot 2018-08-23 at 16 48 17

こっちも一緒。

vue.common.jsは、エラーが発生した場所を見つけようとしても意味がありません。

ソースファイルの行番号だけでデバッグが大幅に高速化されることに同意します

これについて何か新しいことはありますか? 問題が解決されたのはなぜですか(問題がまだ残っているため)?

これが修正されるのが大好きです! 現在、デバッグは複雑すぎます。デバッグを容易にするためにファイル名と行番号が必要です。修正してください

私も同意します。私の.vueファイルは非常に大きいので、正確な場所を取得すると役立ちます。

私はどのコンポーネントを決定するかについていくらか前進し、エラーの行番号(多くの場合)を取得できます。 (私は単一のファイルコンポーネントを使用しています)。 しかし、まだやるべきことはまだたくさんあります。 私は将来、私の発見を発表したいと思っています。

@ gpadilla123神のスピードサー。 あなたの仕事を楽しみにしています。

不正な形式のreturnステートメントのコードをまだ組み合わせている人がいる場合は、テンプレートで式と関数呼び出しの両方を使用すると、エラーの原因が発生していることがわかりました。
この場合、 :class="x=0; getClass()"x=0;削除すると、警告が削除されます。 これは必ずしもこのリストの誰にも当てはまるわけではありませんが、テンプレートを確認することを忘れないでください。

今日でもボールとしては不明です。 vueが何かを評価しているときにエラーが発生します。

Vue 3.0はエラーメッセージが改善されるため、この問題を解決するはずですが、Vue 3.0のリリース日は2019年第2四半期の終わりから2019年の終わりまでの範囲です。待つのが長すぎるので、行を取得する方法をハックしましたエラーの数(場合によっては)。 ハッキングされたソリューションは、より堅牢で、より多くのケースで機能する必要があります。

ええ、これは私を殺しています、私は少なくとも行番号か何かがよりよく指定することを期待していました

+1

これは致命的です。 エラーが発生している行を正しく報告する必要があります。 現時点では、エラーが発生したときに、完全に役に立たないvue.jsの行番号を取得しているようです。

[Vue警告]:レンダリングエラー:「TypeError:未定義のプロパティ「0」を読み取れません」

[Vue warn]: Error in render: "TypeError: Cannot read property 'length' of undefined"
行を検索するのが楽しいでしょう。 特に私のコードにたくさんの.lengthがあるとき。

このようなメッセージは、野生のガチョウの追跡のようなものです。 エラーが発生した場所の手がかりはありません。行番号、Vueの名前、作成した関数の名前であり、Vueフレームワークの一部ではないことを期待しています。 これはvue2.5.17で発生します。 このような場合、vue開発拡張機能からの助けもありません。

image

これがVue3.0で対処されることを聞いてうれしいです。 それまでの間、私は良いヒントを見つけました。コンソールのエラー行インジケーターをクリックしてから、Vueのソースの同じ行にブレークポイントを設定します。 次に、ページをリロードできます。デバッガーはブレークポイントで停止し、コンポーネントの1つが見つかるまでスタックをバックアップできます。通常、エラーが発生します。

完璧ではありませんが、バグハントで動けなくなる可能性があります。

[Vue warn]: Error in render: "TypeError: Cannot read property 'length' of undefined"
行を検索するのが楽しいでしょう。 特に私のコードにたくさんの.lengthがあるとき。

ついにその線を見つけた。
問題が解決されていれば、それほど長くはかからなかったでしょう。

+ 1、vueのコンソールログはひどく不足しています。 以下を例にとってみましょう。 コンポーネントスタックを教えてくれます。これは素晴らしいことですが、ここには行番号への参照がなく、呼び出しスタック全体が、コンポーネントコードではなく、vueコードをコンパイルすることを指しています。 コンポーネント名の横の行番号だけで十分です。

image

行番号なしのデバッグにも問題があります...

image

image
勝負を受けて立つ。

これは何年もの間厄介であり、今でもそうです。

私はこれをスクロールして、誰かがこれに対してすでにいくつかの超秘密のハックを持っているか、すでにいくつかの更新を持っていることを望んでいました

+1

TypeError: Cannot read property 'length' of undefined

しかし、私は30-50を持っています.lengthと私はどこで間違いをしたのかわかりません。

レンダリングエラーには本当に行番号が必要です。

回避策はありますか?

確認できます、私はここで自分のコードを見つめています...なぜそれが失敗しているのかについての手がかりはありません。

Vueに不利な点がある場合は、これが1つだけになります

このページは役に立ちましたか?
0 / 5 - 0 評価