启用ES模块后,如何在Express中导入路由文件?
解决方案:改用ES模块导入路由
不需要手动导出每个render,只需要导出整个配置好的router实例即可,步骤如下:
1. 修改路由文件的导出逻辑
在你的路由文件(./routes/index.js)末尾添加导出语句,同时把文件内的require替换为ES模块的import(因为整个项目已切换为ES模块规范):
import express from 'express'; const router = express.Router(); router.get("/", function (req, res, next) { res.render("index", { title: "Library" }); }); router.get("/library/:title", function (req, res, next) { res.render("library"); }); // 导出整个配置好的router实例 export default router;
2. 修改app.js的导入语句
把原来的require替换为ES模块的import,注意Node.js的ES模块要求相对路径必须加上.js后缀:
// 替换原有的 require("./routes/index") import indexRouter from './routes/index.js';
为什么不用导出每个render?
我们导出的是已经挂载好所有路由规则的router实例,express会自动识别该实例上的所有get/post等路由配置,直接通过app.use('/', indexRouter)挂载后,所有原有路由规则都会正常生效,完全兼容之前的用法,无需额外修改其他代码。
内容的提问来源于stack exchange,提问作者Dagger
相关产品推荐
相关产品推荐

