ReferenceError:模块未定义

时间:2020-09-20 03:20:39

标签: javascript node.js reactjs syntax-error node-modules

所以我一直在尝试运行此Web应用程序,但最初显示为

(节点:12960)警告:要加载ES模块,请在package.json中设置“ type”:“ module”或使用.mjs扩展名。
C:\ Users \ J \ react-messenger \ stream-chat-boilerplate-api \ src \ index.js:1
从“ dotenv”导入dotenv; ^^^^^^

SyntaxError:无法在模块外部使用import语句

然后我去把type:模块设置到package.json中,但这给了我这个错误

ReferenceError:模块未定义

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;

我不知道自己在做什么错

2 个答案:

答案 0 :(得分:0)

您正在将ES导入与CommonJS混合使用-在文件底部,您有module.exports = api;,这是CJS术语。 ES模块的等效项是:

exports default 

答案 1 :(得分:0)

在package.json中检查dotenv,请确保npm install dotenv。 https://www.npmjs.com/package/dotenv