我正在嘗試根據函式中收到的引數匯入模塊,當我使用 Common JS 時它對我有用,但在我更改為 ES Modules 后,我無法做到這一點。
這是對我有用的代碼,將變數與 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;
uj5u.com熱心網友回復:
要使用計算的檔案名,您必須使用dynamic import()而不是 static import。
fs.readdirSync(PATH_ROUTES).forEach(file => {
const name = removeExtension(file);
if (name != 'index') {
router.use(`/${name}`, await import(`./${file}`));
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/464290.html
標籤:javascript 节点.js es6-模块 常见的
