ReferenceError: 要求未定义(在我的休息 api 上)
Posted
技术标签:
【中文标题】ReferenceError: 要求未定义(在我的休息 api 上)【英文标题】:ReferenceError: require is not defined (on my rest api) 【发布时间】:2021-03-09 19:56:40 【问题描述】:不起作用 嘿伙计们,我已经尝试了很多方法来解决这个问题,但我真的找不到答案。
我正在为我的网站制作一个休息 API 以做出反应,我对此很陌生...... 我正在尝试将我的 server.js 文件连接到我的 routes.js 文件,但它不会让我因为它无法识别 de“require”。
import express from "express";
import cors from 'cors';
import mysql from 'mysql';
const routes = require('./routes');
app.use(cors());
const app = express();
const connection = mysql.createConnection(
host: 'localhost',
user: 'root',
password: '',
database: 'marioquiz'
);
app.use(express.json());
app.use(routes);
app.use('/User',routes);
app.get('/',(req,res)=> res.send('O servidor esta a funcionar...'));
app.listen(5000);
然后返回这个错误:
file:///C:/Users/Mario/Desktop/Master/Backend/src/server.js:4
const routes = require('./routes');
^
ReferenceError: require is not defined
at file:///C:/Users/Mario/Desktop/Master/Backend/src/server.js:4:16
at ModuleJob.run (internal/modules/esm/module_job.js:146:23)
at async Loader.import (internal/modules/esm/loader.js:165:24)
at async Object.loadESM (internal/process/esm_loader.js:68:5)
【问题讨论】:
您不能使用 ESM 模块文件中的require()
。请改用import
。如果您没有意识到,nodejs 中的模块是 CommonJS 或 ESM。 CommonJS 是原始类型的模块文件,使用require()
加载其他模块。较新的 JS 模块类型是 ESM,仅使用 import
加载其他模块。您只能是一种类型的文件,因此只能使用一种类型的语法来导入任何给定模块中的模块。该模块目前被指定为 ESM 模块,因此只能使用 import 来加载其他模块。
【参考方案1】:
require
关键字用于 CommonJS modules,但您似乎已将 Node.js 配置为使用 ECMAScript modules 运行您的应用程序。使用 ECMAScript 模块引入 routes
的等效方法类似于:
import routes from './routes.js';
请记住,您必须编写 routes.js
文件才能与 ECMAScript 模块兼容,例如:
const routes = [
...
];
export routes ;
【讨论】:
以上是关于ReferenceError: 要求未定义(在我的休息 api 上)的主要内容,如果未能解决你的问题,请参考以下文章
未捕获的 ReferenceError:未使用 react-chartjs.min.js 定义要求
AngularJS、nodeJS、ReferenceError:未定义要求
Angular 2/webpack 中的“未捕获的 ReferenceError:未定义要求”