🐈
【graphql-upload】export in package.json causes import failuresの解消方法
はじめに
ファイルをアップロードする関係上、multipart/form-data
をリクエストで受け取る必要があったのでgraphql-upload
を利用したが No "main" export in package.json causes import failures
エラーが発生したので調査した結果をまとめています。
環境
graphql-upload
latest(16.0.2)で発生
graphql-upload
のREADME.md
に記載のあるRequirements
の通りにコンパイルオプションを変更した
結論
graphql-upload-minimal
で代用しました
こちらはgraphql-upload
をフォークされて作られたものなので同じように使用することが可能です
Simply said, if you're not ready for the enlightenment, just stick with the @13 version 😄 or use graphql-upload-minimal package
実際に利用する場合は以下の形式でインポート先を変更するだけで利用が可能です
NestJS
を利用していますがNode.js
等で利用される場合は構文を読み替えていただければ同様の結果を得ることができると思います。
app.module.ts
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')
}
Discussion