这是我的 server.js 文件:
const express = require('express');
const connectDB = require('./config/db');
const path = require('path');
const app = express();
// Connect Database
connectDB();
// Init Middleware
app.use(express.json());
// Define Routes
app.use('/api/users', require('./routes/api/users'));
在这段代码中,我遇到了一些问题,如下所示。
node:internal/errors:490
ErrorCaptureStackTrace(err);
^
Error [ERR_REQUIRE_ESM]: require() of ES Module E:\Study\DEC\devconnector_mobang\config\db.js from E:\Study\DEC\devconnector_mobang\index.js not supported.
Instead change the require of db.js in E:\Study\DEC\devconnector_mobang\index.js to a dynamic import() which is available in all CommonJS modules.
这个错误的原因只是需要。 所以我希望同时使用import和require或者将require转换为import。 我已经尽力了。
import express from "express";
import connectDB from "./config/db.js";
import path from "path";
//Difine require
import { createRequire } from "module";
const require = createRequire(import.meta.url);
const app = express();
// Connect Database
connectDB();
// Init Middleware
app.use(express.json());
const user = require("./config/default");
app.use("/api/users", user);
在这里,它无法读取这个。
import connectDB from "./config/db.js";
但它可以读这个。
import connectDB from "./config/default.json";
我希望能帮助你解决这个问题。 谢谢。
希望能解决这个问题
据我所知,您可以在节点项目中同时使用 import 和 require,但不能在同一个文件中使用。 例如,如果您使用“type: commonjs”,那么您可以添加扩展名 .mjs 以导入该文件中的模块。
但是如果您使用“type: module”,那么您可以导入并使用 createRequire 方法:
import { createRequire } from 'module';
const require = createRequire(import.meta.url);
// Now you can use require
const express = require('express');