Node.js 错误[ERR\U REQUIRE\U ESM]:必须使用导入在express中加载ES模块
每次运行express文件时都会出现此错误 错误[ERR\U REQUIRE\U ESM]:必须使用导入加载ES模块: F:\MERN\backend\index.js at Object.Module._extensions..js(internal/modules/cjs/loader.js:1174:13) at Module.load(内部/modules/cjs/loader.js:1002:32) 在Function.Module.\u load(内部/modules/cjs/loader.js:901:14)Node.js 错误[ERR\U REQUIRE\U ESM]:必须使用导入在express中加载ES模块,node.js,express,Node.js,Express,每次运行express文件时都会出现此错误 错误[ERR\U REQUIRE\U ESM]:必须使用导入加载ES模块: F:\MERN\backend\index.js at Object.Module._extensions..js(internal/modules/cjs/loader.js:1174:13) at Module.load(内部/modules/cjs/loader.js:1002:32) 在Function.Module.\u load(内部/modules/cjs/loa
在Function.executeUserEntryPoint[作为runMain](internal/modules/run_main.js:74:12) 在internal/main/run_main_module.js:18:47{code:'ERR_REQUIRE_ESM'} index.js文件如下所示:
import express from "express";
import bodyParser from 'body-parser';
import mongoose from 'mongoose';
import cors from 'cors';
const app = express();
app.use(bodyParser.json({ limit: "30mb", extended: true }))
app.use(bodyParser.urlencoded({ limit: "30mb", extended: true }))
app.use(cors());
const CONNECTION_URL = "mongoose connection url";
const PORT = process.env.PORT|| 5000;
mongoose.connect(CONNECTION_URL, { useNewUrlParser: true, useUnifiedTopology: true })
.then(() => app.listen(PORT, () => console.log(`Server running on port: ${PORT}`)))
.catch((error) => console.log(error.message));
mongoose.set('useFindAndModify', false);
我还添加了
“类型”:“模块”
在package.json文件中,但错误仍然存在。这是package.json文件
{
"name": "backend",
"version": "1.0.0",
"main": "index.js",
"type": "module",
"scripts": {
"start": "nodemon index.js"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"body-parser": "^1.19.0",
"cors": "^2.8.5",
"express": "^4.17.1",
"mongoose": "^5.12.7",
"nodemon": "^2.0.7"
},
"devDependencies": {},
"description": ""
}
我尝试过重命名索引文件,但这个错误似乎也没有解决。
这是否与正在运行的节点版本有关。我目前正在节点版本12.16.1上运行此功能
编辑:通过更新到节点的最新版本解决了错误