Ember.jsアプリケーションで[email protected]を[email protected]に更新したところ、コンソールにmoment()を入力するか、スクリプトに含めると、瞬間が定義されていないというエラーが表示されます。
ドキュメントでは、「2.4.0以降、グローバルにエクスポートされたモーメントオブジェクトは非推奨になりました。」を見ました。これはここの問題だと思いますが、コードベースのmoment()へのすべての参照が現在壊れていないように、emberでグローバルにモーメントを設定する方法がわかりません。
Require( 'moment')を行っていた行をvar moment = require( 'moment')に更新しようとしましたが、結果は同じです。 var moment = ...行の直後にデバッガを配置し、コンソールにmoment()を入力しても、その瞬間は未定義です。
新しいドキュメントの Browser セクションが必要です。
そう...
<script src="moment.js"></script>
<script>
moment().format();
</script>
Edit
そうは言っても、これはおそらくあなたに同じ問題を与えるように見えます。
Moment.js は、グローバル変数で名前空間を汚さないために、パッケージマネージャーの使用を推奨しているようです。
CommonJS および [〜#〜] amd [〜#〜] を読んで、それを現在のスタックに組み込んでください。
次のようなことを行う必要があります。
var moment = require('moment');
moment().format();
ただし、require
を使用するには、前述のようなモジュールシステムが必要です。
しかし
明らかな修正は、新しい機能が必要ない限り、Moment.jsのバージョンをロールバックすることです。単純なtime/dateライブラリの更新はどれほど重要ですか?
これは、moment.jsの前に既にパッケージマネージャー/ローダーがある場合に発生します。
その瞬間を検出することがわかります
module.exports
define.AMD
このようなものがない場合、global.moment
が割り当てられます。
global
変数は、実際にはwindow
です。 factory
変数は、モーメントスコープの閉鎖を表す以下のfunction
です。
2つの可能性:
a)CommonJS/SystemJS ...パッケージマネージャー/ローダーが<script src="/scripts/moment-with-locales.js">
の前にないことを確認します
b) @ shennan's answer に従い、パッケージマネージャー/ローダーによって瞬間を読み込みます。 SystemJSを使用:
SystemJS.import('/scripts/moment-with-locales.js').then(function(moment) {
moment.locale('fr');
});