facebook / relay

Relay is a JavaScript framework for building data-driven React applications.
https://relay.dev
MIT License
18.28k stars 1.81k forks source link

hooks.js.flow busted: Cannot resolve module ./relay-experimental/loadQuery (and many more) #3147

Open matthewoates opened 3 years ago

matthewoates commented 3 years ago
flow-bin: 0.13.0
react-relay: 10.0.1

After upgrading to the latest version of react-relay and flow, I'm getting the following errors:

Error ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈ client/node_modules/react-relay/hooks.js.flow:19:27

Cannot resolve module ./relay-experimental/loadQuery. [cannot-resolve-module]

     16│ const RelayEnvironmentProvider = require('./relay-experimental/RelayEnvironmentProvider');
     17│
     18│ const fetchQuery = require('./relay-experimental/fetchQuery');
     19│ const loadQuery = require('./relay-experimental/loadQuery');
     20│
     21│ const loadEntryPoint = require('./relay-experimental/loadEntryPoint');
     22│

Error ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈ client/node_modules/react-relay/hooks.js.flow:21:32

Cannot resolve module ./relay-experimental/loadEntryPoint. [cannot-resolve-module]

     18│ const fetchQuery = require('./relay-experimental/fetchQuery');
     19│ const loadQuery = require('./relay-experimental/loadQuery');
     20│
     21│ const loadEntryPoint = require('./relay-experimental/loadEntryPoint');
     22│
     23│ const useBlockingPaginationFragment = require('./relay-experimental/useBlockingPaginationFragment');
     24│ const useEntryPointLoader = require('./relay-experimental/useEntryPointLoader');

Error ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈ client/node_modules/react-relay/hooks.js.flow:23:47

Cannot resolve module ./relay-experimental/useBlockingPaginationFragment. [cannot-resolve-module]

     20│
     21│ const loadEntryPoint = require('./relay-experimental/loadEntryPoint');
     22│
     23│ const useBlockingPaginationFragment = require('./relay-experimental/useBlockingPaginationFragment');
     24│ const useEntryPointLoader = require('./relay-experimental/useEntryPointLoader');
     25│ const useFragment = require('./relay-experimental/useFragment');
     26│ const useLazyLoadQuery = require('./relay-experimental/useLazyLoadQuery');

and I suspect it's because react-relay/hooks.js.flow references relative files:

const useBlockingPaginationFragment = require('./relay-experimental/useBlockingPaginationFragment');
const useEntryPointLoader = require('./relay-experimental/useEntryPointLoader');
const useFragment = require('./relay-experimental/useFragment');
const useLazyLoadQuery = require('./relay-experimental/useLazyLoadQuery');
const useMutation = require('./relay-experimental/useMutation');
const usePaginationFragment = require('./relay-experimental/usePaginationFragment');
const usePreloadedQuery = require('./relay-experimental/usePreloadedQuery');
const useQueryLoader = require('./relay-experimental/useQueryLoader');
const useRefetchableFragment = require('./relay-experimental/useRefetchableFragment');
const useRelayEnvironment = require('./relay-experimental/useRelayEnvironment');
const useSubscribeToInvalidationState = require('./relay-experimental/useSubscribeToInvalidationState')
const useSubscription = require('./relay-experimental/useSubscription');

These files are not available at ./relay-experimental/* but they are available at ./lib/relay-experimental/*.

.flowconfig:

[ignore]
.*/test
.*/client/bin
.*/server/bin
.*/test/bin
.*/declarations
.*/img/svg/.*
.*/node_modules/graphql
.*/server/node_modules/graphql
.*/server/node_modules/express-graphql

[include]

[libs]
declarations
flow-typed

[options]
esproposal.class_instance_fields=enable
esproposal.optional_chaining=enable
matthewoates commented 3 years ago

Additionally: (first few are fixed by declaring $FlowFixMeProps)

Error ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈ client/node_modules/react-relay/ReactRelayFragmentContainer.js.flow:36:23

Cannot resolve name $FlowFixMeProps. [cannot-resolve-name]

     33│   RelayContext,
     34│ } from 'relay-runtime';
     35│
     36│ type ContainerProps = $FlowFixMeProps;
     37│ type ContainerState = {
     38│   data: {[key: string]: mixed, ...},
     39│   prevProps: ContainerProps,

Error ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈ client/node_modules/react-relay/ReactRelayPaginationContainer.js.flow:349:40

Cannot resolve name $FlowFixMeProps. [cannot-resolve-name]

     346│     connectionConfig.getFragmentVariables ||
     347│     createGetFragmentVariables(metadata);
     348│
     349│   return class extends React.Component<$FlowFixMeProps, ContainerState> {
     350│     static displayName = containerName;
     351│
     352│     _isARequestInFlight: boolean;

Error ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈ client/node_modules/react-relay/ReactRelayRefetchContainer.js.flow:55:23

Cannot resolve name $FlowFixMeProps. [cannot-resolve-name]

     52│ } from 'relay-runtime';
     53│ import type {FragmentSpecResolver} from 'relay-runtime';
     54│
     55│ type ContainerProps = $FlowFixMeProps;
     56│
     57│ type ContainerState = {
     58│   data: {[key: string]: mixed, ...},
Error ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈ client/node_modules/relay-runtime/store/RelayModernQueryExecutor.js.flow:620:12

Missing type annotation for U. U is a type parameter declared in function type [1] and was implicitly instantiated at
call of method map [2]. [missing-annot]

     client/node_modules/relay-runtime/store/RelayModernQueryExecutor.js.flow
     617│     this._incrementalPayloadsPending = false;
     618│     this._incrementalResults.clear();
     619│     this._source.clear();
 [2] 620│     return responses.map(payloadPart => {
     621│       const relayPayload = normalizeResponse(
     622│         payloadPart,
     623│         this._operation.root,
     624│         ROOT_TYPE,
     625│         {
     626│           getDataID: this._getDataID,
     627│           treatMissingFieldsAsNull: this._treatMissingFieldsAsNull,
     628│           path: [],
     629│         },
     630│       );
     631│       this._publishQueue.commitPayload(
     632│         this._operation,
     633│         relayPayload,
     634│         this._updater,
     635│       );
     636│       return relayPayload;
     637│     });
     638│   }
     639│
     640│   /**

     /private/tmp/flow/flowlib_af9e59e/core.js
 [1] 235│     map<U>(callbackfn: (value: T, index: number, array: $ReadOnlyArray<T>) => U, thisArg?: mixed): Array<U>;
stale[bot] commented 3 years ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

matthewoates commented 3 years ago

This is still an issue