undefined 不是一个函数。 Graphql + apollo + React Native

问题描述 投票:0回答:1

在我的 React Native 项目中,我使用 graphql codegen 来生成类型和钩子。我正在使用本机反应 0.74.5。但我不知道为什么会出现错误,所以这就是我无法启动我的应用程序的原因。

这也是我的 codegen.ts。

import type { CodegenConfig } from '@graphql-codegen/cli';

const config: CodegenConfig = {
  overwrite: true,
  schema: 'http://localhost:1337/graphql',
  documents: ['src/graphql/**/*.graphql'],
  hooks: {
    afterAllFileWrite: ['npx lint ts --fix'],
  },
  ignoreNoDocuments: true,
  emitLegacyCommonJSImports: true,
  config: {
    namingConvention: {
      transformUnderscore: true,
    },
    maybeValue: 'T | null | undefined',
    inputMaybeValue: 'T | null | undefined',
    experimentalFragmentVariables: true,
    scalars: {
      Date: 'string',
      DateTime: 'Date',
      I18NLocaleCode: 'string',
      JSON: 'Record<string, any|any[]|string|number|boolean|null|undefined>|any[]',
      Long: 'number',
      Time: 'string',
      Upload: 'unknown',
    },
  },
  generates: {
    'src/graphql/index.ts': {
      plugins: [
        {
          'fragment-matcher': {
            useExplicitTyping: true,
            module: 'es2015',
          },
        },
        {
          'typescript-react-apollo': {
            dedupeFragments: true,
            optimizeDocumentNode: true,
            addDocBlocks: false,
            withComponent: false,
            withHooks: true,
            withMutationOptionsType: false,
          },
        },
      ],
    },
    'src/types/graphql.d.ts': {
      config: {
        noExport: true,
        skipTypename: true,
        enumsAsTypes: true,
      },
      plugins: ['typescript', 'typescript-operations'],
    },
    './graphql.schema.json': {
      plugins: ['introspection'],
    },
  },
};

export default config;

这是我的错误

我尝试删除所有生成的文件并重新生成。我还尝试删除node_modules、yarn.lock、pod 文件,然后重新安装所有这些文件。另外,我还在我的 Metro.config.js 中添加了 cjs 文件支持(如下)。

const { getDefaultConfig, mergeConfig } = require('@react-native/metro-config');

const defaultConfig = getDefaultConfig(__dirname);
const { assetExts, sourceExts } = defaultConfig.resolver;

/**
 * Metro configuration
 * https://facebook.github.io/metro/docs/configuration
 *
 * @type {import('metro-config').MetroConfig}
 */
const config = {
  transformer: {
    babelTransformerPath: require.resolve('react-native-svg-transformer'),
  },
  resolver: {
    assetExts: assetExts.filter(ext => ext !== 'svg'),
    sourceExts: process.env.RN_SRC_EXT
      ? [...process.env.RN_SRC_EXT.split(',').concat(sourceExts), 'cjs']
      : [...sourceExts, 'svg', 'jsx', 'js', 'ts', 'tsx', 'cjs'],
  },
};

module.exports = mergeConfig(defaultConfig, config);
reactjs typescript react-native graphql apollo-client
1个回答
0
投票

您似乎尚未安装

graphql-tag
- 请确保安装该软件包。

© www.soinside.com 2019 - 2024. All rights reserved.