質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.64%

Reactでgoogle calendarをうまく表示できない

受付中

回答 0

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 641

aiai8976

score 80

前提・実現したいこと

https://crashspringfield.github.io/react-google-calendar/
このサイトを参考にreactでgoogle calendarを表示したいと考えています。
しかし、実行時に以下のようなエラーが発生しました。
momentの扱いがよくわかりません。
わかる方がいましたらコメントお願いします。 

発生している問題・エラーメッセージ

TypeError: Cannot read property 'momentLocalizer' of undefined

該当のソースコード

"use strict";

Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.default = void 0;

var _react = _interopRequireWildcard(require("react"));

var _reactBigCalendar = _interopRequireDefault(require("react-big-calendar"));

var _moment = _interopRequireDefault(require("moment"));

require("react-big-calendar/lib/css/react-big-calendar.css");

var _googleAPI = _interopRequireDefault(require("./utils/googleAPI"));

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }

function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }

function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }

function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }

function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }

function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }

function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }

function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }

var localizer = _reactBigCalendar.default.momentLocalizer(_moment.default);  ////////該当部分

var Calendar =
  /*#__PURE__*/
  function (_Component) {
    _inherits(Calendar, _Component);

    function Calendar(props) {
      var _this;

      _classCallCheck(this, Calendar);

      _this = _possibleConstructorReturn(this, _getPrototypeOf(Calendar).call(this, props));

      _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), "componentDidMount", function () {
        if (_this.props.config) {
          _this.getGoogleCalendarEvents();
        } else {
          console.log("React Google Calendar requires you pass a configuration object");
        }
      });

      _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), "getGoogleCalendarEvents", function () {
        _googleAPI.default.getAllCalendars(_this.props.config).then(function (events) {
          _this.setState({
            events: events
          });
        }).catch(function (err) {
          throw new Error(err);
        });
      });

      _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), "render", function () {
        return _react.default.createElement("div", null, _react.default.createElement(_reactBigCalendar.default, {
          localizer: localizer,
          events: _this.state.events,
          style: {
            height: "100vh"
          }
        }));
      });

      _this.state = {
        events: []
      };
      return _this;
    }

    return Calendar;
  }(_react.Component);

exports.default = Calendar;
import Calendar from 'react_google_calendar';
import React from 'react';

const calendar_configuration = {
  api_key: 'hogehoge',
  calendars: [
    {
      name: 'shift',
      url: 'https://calendar.google.com/calendar/embed?hogehoge'
    }
  ],
  dailyRecurrence: 700,
  weeklyRecurrence: 500,
  monthlyRecurrence: 20
}

export default class GoogleCalendar extends React.Component {
  constructor(props) {
    super(props)
    this.state = {
      events: []
    }
  }

  render = () =>
    <div>
      <Calendar
        events={this.state.events}
        config={calendar_configuration} />
    </div>
}
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正の依頼

  • guissy-k

    2019/12/04 13:59

    _reactBigCalendar.defaultが存在しないようなので、エラーが出る行の直前で `console.log(_reactBigCalendar);` を追加してみて出力された結果を追記いただいてもよろしいですか?

    キャンセル

まだ回答がついていません

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.64%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る