【graphql-upload】在package.json中的导出问题解决方法
首先
由于需要上传文件,所以我需要使用multipart/form-data来接收请求,在此我使用了graphql-upload。然而,由于package.json中没有”main”导出,导致了导入错误的问题。以下是我调查的结果总结。
环境
graphql-upload 最新版(16.0.2)出现了一个问题。
根据 graphql-upload 的 README.md 中的要求,修改编译选项。
结论 – (Conclusion)
我使用了graphql-upload-minimal作为替代。这是基于graphql-upload的分支创建的,因此可以以类似的方式使用。
简单说,如果你还没有准备好接受启蒙,就继续使用@13版本 ? 或者使用graphql-upload-minimal包。
如果实际使用的话,只需要按照以下格式更改导入目标即可使用。我使用了NestJS,但如果在Node.js等中使用的话,只需重新解读语法,就能够得到类似的结果。
import { MiddlewareConsumer, Module } from '@nestjs/common'
import { AppController } from './app.controller'
import { PrismaModule } from './prisma/prisma.module'
import { GraphQLModule } from '@nestjs/graphql'
import { ApolloDriver, ApolloDriverConfig } from '@nestjs/apollo'
import * as Process from 'process'
import * as path from 'path'
import { LoggerModule } from 'nestjs-pino'
import { ConfigModule } from '@nestjs/config'
import { AuthorModule } from './author/author.module'
import { AppService } from './app.service'
import configuration from './common/config/configuration'
import { graphqlUploadExpress } from 'graphql-upload-minimal'
@Module({
imports: [
LoggerModule.forRoot(),
PrismaModule,
ConfigModule.forRoot({
isGlobal: true,
load: [configuration],
}),
AuthorModule,
GraphQLModule.forRoot<ApolloDriverConfig>({
driver: ApolloDriver,
autoSchemaFile: path.join(process.cwd(), 'src/graphql/schema.gql'),
sortSchema: true,
}),
CustomJwtModule,
Auth0Module,
],
providers: [AppService],
controllers: [AppController],
})
export class AppModule {
configure(consumer: MiddlewareConsumer) {
consumer.apply(graphqlUploadExpress()).forRoutes('graphql')
}