在我的 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);
您似乎尚未安装
graphql-tag
- 请确保安装该软件包。