DEV Community

kaede
kaede

Posted on

GraphQL Udemy の Mirko のコースの通りに import と await でサーバーの作成を試みて失敗した

udemy mirkonasato のコースを参考に Apollo サーバーをつくる

https://www.udemy.com/course/graphql-by-example/learn/lecture/31830022?start=0#overview

GraphQL サーバーのフォルダと package.json を作成

gq1/ のフォルダと、中に server/ のフォルダを作成

この中にファイルを作る。

package.json を作成して

{
  "name": "gq1",
  "private": true,
  "type": "module"
}
Enter fullscreen mode Exit fullscreen mode

name, private, type を記入


NPM で apollo-server と graphql をインストール

npm i apollo-server graphql
Enter fullscreen mode Exit fullscreen mode

server.js ファイルを作成して起動するが、gql の import と await の実行に失敗。

https://github.com/mirkonasato/graphql-hello-world/blob/main/server/server.js

このソースコードの通りに書いて実行すると

node server/server.js 

const { url } = await server.listen({ port: 9000 });
                ^^^^^

SyntaxError: Unexpected reserved word
Enter fullscreen mode Exit fullscreen mode

await が予期しない予約言葉と出る。

async の中でしか使えないからと解釈した。

この await を削除して 実行すると

import { ApolloServer, gql } from 'apollo-server';
                       ^^^
SyntaxError: The requested module 'apollo-server' does not provide an export named 'gql'
Enter fullscreen mode Exit fullscreen mode

apollo-server は gql を供給しないとでてしまう。

https://github.com/apollographql/apollo-server/issues/1356

issues をみても解決策は見当たらなかった。


3 倍使われている apollo-server-express を使ってみる

いくつか調べると、だいたい apollo-server ではなく
apollo-server-express を仕様して gql を供給していた。

https://npmtrends.com/apollo-server-vs-apollo-server-express-vs-express-graphql-vs-graphql-yoga-vs-prisma

trends を調べると
apollo-server-express が 1.4M なのに対して、
apollo-server は 0.5M しか使われていない。

なので apollo-server-express を使うことにする。

import { ApolloServer, gql } from 'apollo-server-express';
                       ^^^
SyntaxError: The requested module 'apollo-server-express' does not provide an export named 'gql'
Enter fullscreen mode Exit fullscreen mode

-express も同じエラーを吐いた。
なので諦めて、apollographql.com の公式チュートリアルで環境構築をはじめた。


Top comments (0)