如何通过在目标路由中连接变量来导入模块?
How can I import a module by concatenating a variable in the destination route?
我正在尝试根据函数中接收到的参数导入模块,当我使用 Common JS 时它对我有用,但在我更改为 ES 模块后我无法做到。
这是对我有用的代码,将变量与 require
连接起来
fs.readdirSync(PATH_ROUTES).filter((file) => {
const name = removeExtension(file);
if (name != 'index') {
router.use(`/${name}`, require(`./${file}`));
}
})
我如何使用 ES 模块来做到这一点?
编辑
这是路由文件之一,如您所见,我正在使用 ESM 导入所有内容,因为我已完全迁移到 ESM。
import express from 'express';
import authMiddleware from '../middleware/session.js';
import checkRol from '../middleware/rol.js';
import { validatorGetItem, validatorUpdateItem } from '../validators/users.js';
import { getItems, getItem, updateItem, deleteItem } from '../controllers/users.js';
const router = express.Router();
router.get("/", authMiddleware, checkRol(['administrador']), getItems);
router.get("/:id", authMiddleware, checkRol(['administrador']), validatorGetItem, getItem);
router.put("/:id", authMiddleware, checkRol(['administrador']), validatorGetItem, validatorUpdateItem, updateItem);
router.delete("/:id", authMiddleware, checkRol(['administrador']), validatorGetItem, deleteItem);
export default router;
要使用计算文件名,您必须使用 dynamic import()
,而不是静态 import
.
fs.readdirSync(PATH_ROUTES).forEach(file => {
const name = removeExtension(file);
if (name != 'index') {
router.use(`/${name}`, await import(`./${file}`));
}
}
我正在尝试根据函数中接收到的参数导入模块,当我使用 Common JS 时它对我有用,但在我更改为 ES 模块后我无法做到。
这是对我有用的代码,将变量与 require
连接起来 fs.readdirSync(PATH_ROUTES).filter((file) => {
const name = removeExtension(file);
if (name != 'index') {
router.use(`/${name}`, require(`./${file}`));
}
})
我如何使用 ES 模块来做到这一点?
编辑
这是路由文件之一,如您所见,我正在使用 ESM 导入所有内容,因为我已完全迁移到 ESM。
import express from 'express';
import authMiddleware from '../middleware/session.js';
import checkRol from '../middleware/rol.js';
import { validatorGetItem, validatorUpdateItem } from '../validators/users.js';
import { getItems, getItem, updateItem, deleteItem } from '../controllers/users.js';
const router = express.Router();
router.get("/", authMiddleware, checkRol(['administrador']), getItems);
router.get("/:id", authMiddleware, checkRol(['administrador']), validatorGetItem, getItem);
router.put("/:id", authMiddleware, checkRol(['administrador']), validatorGetItem, validatorUpdateItem, updateItem);
router.delete("/:id", authMiddleware, checkRol(['administrador']), validatorGetItem, deleteItem);
export default router;
要使用计算文件名,您必须使用 dynamic import()
,而不是静态 import
.
fs.readdirSync(PATH_ROUTES).forEach(file => {
const name = removeExtension(file);
if (name != 'index') {
router.use(`/${name}`, await import(`./${file}`));
}
}