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

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

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

自身のプラットフォーム・プログラム・データセットに対して、外部ソースを取り込むプロセスをimportと呼びます。

Node.js

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Express

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

Q&A

解決済

1回答

3091閲覧

import文でExpressサーバを作るとCannot use import statement outside a moduleとエラーになります

neoz

総合スコア31

import

自身のプラットフォーム・プログラム・データセットに対して、外部ソースを取り込むプロセスをimportと呼びます。

Node.js

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Express

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

0グッド

0クリップ

投稿2020/10/18 08:05

Node.jsでExpressサーバーを作り、knexでPostgressと繋ぎ、フロントエンドはReactを使っています。

現状、サーバー部分を記載しているapp.jsはrequire文で記載していますが
import文を使っている別ファイルの内容をapp.jsでも使う必要があり、
app.jsをimport文へ書き換えようとしています。

// 現状の正常に動作するapp.js

JavaScript

1const express = require("express"); 2const morgan = require("morgan"); 3const path = require("path"); 4const db = require("./knex.js"); 5const app = express(); 6const bodyParser = require('body-parser');

// 目指すapp.js

JavaScript

1import express from "express"; 2import morgan from "morgan"; 3import path from "path"; 4import db from "./knex.js"; 5import bodyParser from 'body-parser'; 6const app = express();

しかし、この形にすると
//エラー

import express from "express"; ^^^^^^ SyntaxError: Cannot use import statement outside a module

となってしまいます。

StackOverflowでよく言われている解決策のpackage.json

"type": "module"

を追記するという方法を試しましたが、そうすると
// エラー

internal/modules/cjs/loader.js:1174 throw new ERR_REQUIRE_ESM(filename, parentPath, packageJsonPath); ^ Error [ERR_REQUIRE_ESM]: Must use import to load ES Module

と言われ、解決策がわかりません。

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

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

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

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

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

guest

回答1

0

自己解決

Expressサーバー周りの他のファイルをrequireで書いていたことが原因でした。
今まではそれらがES6ファイルと一緒に動いていなかったので問題なかったのですが、今回リンクさせたために動かなくなったようです。
あらゆるファイルのrequire書式をES6で書き換えて動くようになりました。

投稿2020/10/19 01:29

neoz

総合スコア31

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問