質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
GraphQL

GraphQL は、アプリケーション・プログラミング・インタフェース (API) 向けのクエリ言語およびサーバーサイドランタイムです。APIの速度、柔軟性、開発者にとっての使いやすさを向上させるために設計され、データを複数のデータソースから取得するリクエストを1つのAPI呼び出しで構成できます。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Express

ExpressはNode.jsのWebアプリケーションフレームワークです。 マルチページを構築するための機能セットおよびハイブリッドのWebアプリケーションを提供します。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

解決済

1回答

1279閲覧

【Node.js/express-graphql】requireが使えず、「TypeError: graphqlExpress is not a function」

tonkotsu_ramen

総合スコア6

GraphQL

GraphQL は、アプリケーション・プログラミング・インタフェース (API) 向けのクエリ言語およびサーバーサイドランタイムです。APIの速度、柔軟性、開発者にとっての使いやすさを向上させるために設計され、データを複数のデータソースから取得するリクエストを1つのAPI呼び出しで構成できます。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Express

ExpressはNode.jsのWebアプリケーションフレームワークです。 マルチページを構築するための機能セットおよびハイブリッドのWebアプリケーションを提供します。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿2021/09/01 02:35

やろうしていること

下記、リンク記事に従い、ローカルでAPIサーバーを構築しています。
https://www.aizulab.com/blog/graphql-compose/
エラーを解消して、express-graphqlを読めるようにしたい。

環境

nodejs: v14.17.0
OS: MacOS

詳細な状況

このように記述し、node server.jsを実行しました。

// ./server.js import express from "express"; import bodyParser from "body-parser"; import DB from "./utils/database.js"; import graphqlExpress from 'express-graphql'; import schema from "./schemata/user.js"; const PORT = 8080; const app = express(); DB.connect(); app.use("/hello", (req, res) => { res.send("Hello World!"); }); app.use( "/graphql", graphqlHTTP({ schema: schema, graphiql: true, }) ); app.listen(PORT, () => { console.log(`Started on port ${PORT}`); });

そうすると、このようなエラーが出ました。

/$ node server.js DB接続OK file:/server.js:15 graphqlExpress({ schema, graphiql: true }) ^ TypeError: graphqlExpress is not a function at file://server.js:15:3 at ModuleJob.run (internal/modules/esm/module_job.js:152:23) at async Loader.import (internal/modules/esm/loader.js:177:24) at async Object.loadESM (internal/process/esm_loader.js:68:5)

TypeError: graphqlExpress is not a functionについて調べたところ、
下記の記事を見つけ、このように書き換えました。
https://qiita.com/shibuya01055/items/2d6846efeefc9800943a

import graphqlExpress from 'express-graphql'; ↓ const { graphqlExpress } = require("express-graphql");

そうすると、エラーメッセージは変わり、このようになりました。

ReferenceError: require is not defined

このメッセージについても調べてみましたが、決定的な解決法がわからず、詰まっている状況です。

他にやってみたこととしては、package.jsonをこのようにしました。

{ "type": "module" }

node.jsのバージョンの問題なのかわかりませんが、解決できていない状況です。
疑わしいところ等あればご教示いただきたく、宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tonkotsu_ramen

2021/09/01 05:41

公式の方法も試してみているのですが、やはり、ReferenceError: require is not definedがでます。
hoshi-takanori

2021/09/01 06:15

package.json に "type": "module" と書いてあると import を使えるようになる代わりに require が使えなくなるようですね。書き方がちょっと違うだけなので、どっちかに統一して使えばいいと思いますけど。 https://book.yyts.org/features/import-export-require
tonkotsu_ramen

2021/09/01 07:31

すみません、import { graphqlHTTP } from 'express-graphql';でできました! さっきはなぜかできなかったのですが…ありがとうございます!!
guest

回答1

0

自己解決

{}で囲んでやると解消しました。

import graphqlHTTP from "express-graphql"; ↓ import { graphqlHTTP } from "express-graphql";

投稿2021/09/01 07:32

tonkotsu_ramen

総合スコア6

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問