Не удалось создать релейный контейнер;В файле graphql.js есть артефакты webpack? - PullRequest
1 голос
/ 03 мая 2019

Я использую Relay с CRA в контейнере Electron и получаю очень странную ошибку, которую я не могу диагностировать: кажется, что фрагмент GraphQL, как импортированный, содержит артефакты Webpack?

Could not create Relay Container for `UsersGrid`. Expected a set of GraphQL fragments, got `function () {
  const node = __webpack_require__(/*! ./__generated__/UsersGrid_viewer.graphql */ "./src/components/users-grid/__generated__/UsersGrid_viewer.graphql.js");

Webpack каким-то образом компилирует файл .graphql.js?Или есть что-то еще, на что я должен смотреть?

Это контейнер Relay:

import { createFragmentContainer, graphql } from 'react-relay';
import UsersGrid from './UsersGrid';

export default createFragmentContainer(
  UsersGrid,
  graphql`
    fragment UsersGrid_viewer on Query {
      user(login: "jvcjunior") {
        followers(first: 10) {
          edges {
            node {
              name
              avatarUrl
            }
          }
        }
      }
    }
  `
);

, который встроен в:

/***/ "./src/components/users-grid/UsersGrid.relay.js":
/*!******************************************************!*\
  !*** ./src/components/users-grid/UsersGrid.relay.js ***!
  \******************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var react_relay__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react-relay */ "./node_modules/react-relay/index.js");
/* harmony import */ var react_relay__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_relay__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _UsersGrid__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./UsersGrid */ "./src/components/users-grid/UsersGrid.js");


/* harmony default export */ __webpack_exports__["default"] = (Object(react_relay__WEBPACK_IMPORTED_MODULE_0__["createFragmentContainer"])(_UsersGrid__WEBPACK_IMPORTED_MODULE_1__["default"], function () {
  const node = __webpack_require__(/*! ./__generated__/UsersGrid_viewer.graphql */ "./src/components/users-grid/__generated__/UsersGrid_viewer.graphql.js");

  if (node.hash && node.hash !== "d730274a63d8021d6427a27e7c3e2c27") {
    console.error("The definition of 'UsersGrid_viewer' appears to have changed. Run `relay-compiler` to update the generated files to receive the expected data.");
  }

  return __webpack_require__(/*! ./__generated__/UsersGrid_viewer.graphql */ "./src/components/users-grid/__generated__/UsersGrid_viewer.graphql.js");
}));

/***/ }),

1 Ответ

4 голосов
/ 03 мая 2019

Попробуйте использовать

createFragmentContainer(Component, {
  viewer: graphql`
    fragment UsersGrid_viewer on Query { ... }
  `
})

вместо

createFragmentContainer(Component,
  graphql`
    fragment UsersGrid_viewer on Query { ... }
  `
)
...