Vue: ランタイム例外:パフォーマンスが定義されていない-v2.6.9の場合

作成日 2019年03月14日  ·  12コメント  ·  ソース: vuejs/vue

バージョン

2.6.8

複製リンク

https://jsfiddle.net/chrisvfritz/50wL7mdz/

再現する手順

現在分離しようとしている最新バージョンのvue / dist / vue.jsファイルからスローされていますが、最近追加された新しいコードに関連しているようです。 それでも観察されない場合は、できるだけ早くステップを追加します。
1)このリポジトリで複製-https://github.com/vuejs/vue-test-utils-mocha-webpack-example
2)クローンする
3)npm i
4)npmテスト-エラーなし
4)npm update vue
5)npm test-ReferenceError:パフォーマンスが定義されていません

ご挨拶、
プラメン

何が期待されますか?

エラーは観察されませんでした

実際に何が起こっているのですか?

エラーが観察された

bug has PR has workaround improvement

最も参考になるコメント

jsdom環境では次のようです。

> window.performance
Performance {}
> performance
ReferenceError: performance is not defined

したがって、jsdomでコードを正しく実行するには、 performance直接呼び出すのでwindow.performaceを使用する必要があります。

全てのコメント12件

バグを報告するときに再現を提供してください

こんにちは@posva
この問題はオンラインエディターでは再現されませんが、「再現手順」セクションでgithubのプロジェクトの手順を提供しました。
ご挨拶、
プラメン

リンクしたのは、アーカイブされ非推奨の例です。 再現はjsfiddleである必要はなく、HTMLファイル(またはその内容のみ)にすることができます。 また、mochaやvue-test-utilsなどの他の依存関係を含めるべきではありません(そのパッケージで問題になる可能性があります)。 乾杯。

返信ありがとうございます!
うーん-私は別のアプローチを試みます-この行にある「パフォーマンス」はファイルのどこにも宣言されていません。 window.performanceとconfig.performanceがありますが、グローバルな「パフォーマンス」は表示されません。 ここには存在しないため、最新リリースが付属しています。

ファイルに対して静的分析を実行すると、スローされます。

ご挨拶、
プラメン

またこれを取得します。 Vueが2.6.9にアップグレードされた後、CIから警告が表示されました(私はRenovateを使用してdepsを最新の状態に保ちます)。

jsdom環境では次のようです。

> window.performance
Performance {}
> performance
ReferenceError: performance is not defined

したがって、jsdomでコードを正しく実行するには、 performance直接呼び出すのでwindow.performaceを使用する必要があります。

さて、ラベルの改善を追加する前にメニューを開き、has PRラベルを追加した後に外側をクリックしたので、それを削除したと思います。 面白いエッジケース

JSDOMが持っているのにことに留意すべきであるperformanceを介して支持をprocess.hrtime 、私は我々が現在のハックを保証することができるとは思わない、 performance JSDOM環境で期待どおり(常に動作します結局のところ、ブラウザの実装とは異なります)。

@ posva😂

これがリリースされるまで、回避策はJSDOM登録後に次の行を追加することです。

// eslint-disable-next-line no-undef
global.performance = window.performance;

これがリリースされるまで、回避策はJSDOM登録後に次の行を追加することです。

// eslint-disable-next-line no-undef
global.performance = window.performance;

愚かで申し訳ありませんが、JSDOM登録はVue CLI 3とcli-plugin-unit-mocha(setup.jsなし)で抽象化されているため、次の行をどこに追加しますか?

助けてくれてありがとう...

// eslint-disable-next-line no-undef 
global.performance = window.performance;

同じ質問。 次の行はどこに追加しますか?

私は私のメインのテストエントリポイントでそれを置い@theonlychase test/setup.jsそれあなたと同じディレクトリrequire('jsdom-global')

以下の--requireフラグで参照されます。

"test": "mocha-webpack --webpack-config webpack/webpack.config.test.js --require test/setup.js reporter mocha-bamboo-reporter"
このページは役に立ちましたか?
0 / 5 - 0 評価