如何在node.js中同时使用require和import?

问题描述 投票:0回答:1

这是我的 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";

我希望能帮助你解决这个问题。 谢谢。

希望能解决这个问题

node.js express import require express-router
1个回答
0
投票

据我所知,您可以在节点项目中同时使用 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');
© www.soinside.com 2019 - 2024. All rights reserved.