お世話になっております。
皆様にお知恵を貸して頂きたく質問させて頂きます。
急にMoment.jsが正常に適用されなくなりました。
確認してみると画像のようなエラーが出ております。
Cybozu公式からは「Moment.js はメンテナンスモードになり、日付処理できる代替ライブラリへの移行 が推奨されています。」との
アナウンスがされているのを昨日発見したのですが、JavaScript初心者の為、移行はもう少し勉強してからと考えておりました。
本日、急に各アプリでの日付表示がおかしくなっている事に気づき、上記のエラーコードを確認してみると
「 ウェブサイト側でしか対処できないので、ユーザーとして遭遇した場合は自力で解決することはできません。 」との記載が。
主要アプリで日付表示が正しくない状態である為、何とか早期改善を図りたいのですが、アドバイスを頂けますと幸いです。
ちなみに、現状以下のソースコードで行コピーを行うと時差分の9時間が自動で追加されてしまいます。
(function() {
'use strict';
kintone.events.on([
"app.record.create.change.工数管理.row",
"app.record.edit.change.工数管理.row",
"app.record.create.change.作業日",
"app.record.edit.change.作業日"
], function(event) {
var record = event.record;
moment.locale('ja'); //Moment.js ロケールの初期化
//「作業日」をwork_dayに代入
var work_day = record.作業日.value;
record.工数管理.value.forEach(function(row) {
//「作業開始」「作業終了」の10文字目~末尾(YYYY-MM-ddT00:00:00+09:00の”T00:00”部)
//までを抜き取りwork_start・work_endへ代入
var start_date = moment(row.value.作業開始.value).format(''); //取得した日時をフォーマット
var end_date = moment(row.value.作業終了.value).format('');
var work_start = start_date.slice(10,16) + ":00+09:00";
var work_end = end_date.slice(10,16) + ":00+09:00";
//「作業開始」「作業終了」へデータセット
row.value.作業開始.value = work_day + work_start;
row.value.作業終了.value = work_day + work_end;
});
record.経費.value.forEach(function(row) {
//「日付」へデータセット
row.value.日付.value = work_day;
});
return event;
});
})();
KT さん
こんにちは。ひよこです。
コンソールを見ると、moment.min.js.map に対して 403 と書いてあり、moment.min.js.map が Cybozu CDN で配信されていないことによる警告メッセージです。
この map ファイルは 403 になっていても、Moment.js の動作には影響がありません。
そのため「急にmoment.jsが正常に機能しなくなった」とは関係無さそうと思いました。
> ちなみに、現状以下のソースコードで行コピーを行うと時差分の9時間が自動で追加されてしまいます。
この部分が、よくわからなかったので教えて下さい。
行コピーは、テーブルの「+」を押すという操作のことでしょうか?
また「時差分の9時間が自動で追加されてしまう」というのは、+マークを押して追加すると、追加した行の「作業開始」や「作業終了」のフィードの値が、初期値+9h になってしまうことでしょうか?
ひよこ様
コメントありがとうございます。また、上記説明不足で大変失礼いたしました。
>日時フィールドの「日付」部のみデータ更新したい
過去の問合せにて、moment.jsを使用してサブテーブルの「日時」フィールドに対して
「日付」フィールドの「日」のみを上書きするといった処理を行っております。
現在の状況は、この問合せを行った時点の現象が再発しております為、ひよこさんの仰られる通りMoment.jsに
問題はなくkintone>アプリの設定>「JavaScript / CSSでカスタマイズ」ページに登録しております
Cybozuが提供している以下のURLがアクセスできない状態で読み込めないことが原因だと思われます。
・https://js.cybozu.com/momentjs/2.27.0/moment.min.js
・https://js.cybozu.com/momentjs/2.27.0/moment-with-locales.min.js
自分の画面では、こちらのフォーラムの時間表示もずれて表示されていますが、これは自分側の設定に
問題があるのでしょうか…?
※当記事は本日10時過ぎに投稿したと記憶しておりますが、投稿時刻が”19:28”と表示されております。
おそらくMoment.js用のURLを正しいものに変えることで改善されるような気がするのですが、
その「正しいURL」も何を指定するべきなのか分かりかねている状況でございます…。
プログラミングは素人同然で、大変初歩的な質問をしているかもしれません。ご助力を頂けますと幸いです。
また情報に不足事項がございましたらご指摘ください。
KT さん
ひよこです。
> 自分の画面では、こちらのフォーラムの時間表示もずれて表示されていますが、これは自分側の設定に
> 問題があるのでしょうか…?
> ※当記事は本日10時過ぎに投稿したと記憶しておりますが、投稿時刻が”19:28”と表示されております。
これが kintone の時刻の表示が9時間ずれている原因な気がします。
OS のタイムゾーンかブラウザのタイムゾーンが、日本時刻になっていないのかもしれません。
ちょうど最近、Windows と特定バージョンの Chrome でタイムゾーンがおかしくなる現象も報告されています。
https://forest.watch.impress.co.jp/docs/news/1302470.html
ちなみに、https://js.cybozu.com/momentjs/2.27.0/moment.min.js や https://js.cybozu.com/momentjs/2.27.0/moment-with-locales.min.js をブラウザでクリックすると、どういう画面が表示されますか?
おそらく以下のようなソースコードが表示されるのではないでしょうか。わたしは表示されました。
ソースコードが表示される= Moment.js の URL は有効= kintone アプリに Moment.js を適用し利用できる URL です。
なので、ソースコードが表示されるのであれば、 URLの変更は ** 必要ありません**。
もし URL にアクセスしてもソースコードが表示されないのであれば、Moment.js を利用できてないのだと思います。
ただ、そんな状況のときは、開発者コンソールに「Uncaught ReferenceError: moment is not defined」というエラーが出るはずです。
そのときは Moment.js が動かない状況なので、「日時」フィールドに対して「日付」フィールドの「日」のみを上書きする」という処理そのものが動かないはずです。
ひよこ様
お世話になっております!
まさにひよこさんのご指摘の通り、どうやらOSとChromeのverが問題であった様でした。
昨日PCシャットダウンの際、Windowsアップデートが走り、今朝の段階で現象が改善されて
おりました。
※念の為、ご教授頂きました頁のタイムゾーンの変更⇒元に戻す操作も行っておきました。
ここ最近ブラウザの動作が妙に重いと感じてはおりましたが、会社のPCスペック自体が低い事と、
当不具合が複数人のPCで起こっていた事から、OSやブラウザ側の問題であるとは思いつきません
でした…。
主要アプリで不具合が発生しておりました為、大変困っておりましたが原因と対処方法が判明し
ほっとしております。
> ソースコードが表示される= Moment.js の URL は有効= kintone アプリに Moment.js を適用し利用できる URL です。
> なので、ソースコードが表示されるのであれば、 URLの変更は ** 必要ありません**。
ご丁寧に判別方法までご教授頂き、本当にありがとうございます。
自分一人では解決できない問題でした。お忙しい中、色々とご尽力頂き感謝いたします。
system
(system)
クローズされました:
2025 年 2 月 14 日午前 7:20
6
このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。