1. ホーム
  2. javascript

[解決済み] ReferenceError: モジュールが定義されていません。

2022-02-04 07:45:10

質問

このウェブアプリを実行しようとすると、最初は次のように表示されました。

(node:12960) 警告。ES モジュールをロードするには、package.json で "type": "module" を設定するか、.mjs 拡張子を使用します。
C:\UsersJ³³react-messenger³³stream-chat-boilerplate-api³³src³³index.js:1
dotenvを'dotenv'からインポートします。 ^^^^^^

SyntaxError: モジュール外部でimport文は使用できません

そして、package.jsonにtype: moduleを設定しようとしたのですが、このようなエラーが発生しました。

ReferenceError: module is not defined

at file:///C:/Users/J/react-messenger/stream-chat-boilerplate-api/src/index.js:38:1

以下は私のコードです。

import dotenv from 'dotenv';
dotenv.config();

import fs from 'fs';
import path from 'path';
import express from 'express';
import bodyParser from 'body-parser';
import cors from 'cors';
import helmet from 'helmet';
import compression from 'compression';

const api = express();

api.use(cors());
api.use(compression());
api.use(helmet());
api.use(bodyParser.urlencoded({ extended: true }));
api.use(bodyParser.json());

api.listen(process.env.PORT, error => {
    if (error) {
        console.warn(error);
        process.exit(1);
    }

    // eslint-disable-next-line array-callback-return
    fs.readdirSync(path.join(__dirname, 'routes')).map(file => {
        require('./routes/' + file)(api);
    });

    console.info(
        `Running on port ${process.env.PORT} in ${
            process.env.NODE_ENV
        } mode. ????`
    );
});

module.exports = api;


何が間違っているのかわからない

どうすればいいですか?

ESインポートとCommonJSが混在しています。 module.exports = api; これはCJSの用語です。ESモジュールに相当するのは

export default