express 如何不用重启也能修改路由?

发布于 2022-09-06 08:29:39 字数 398 浏览 12 评论 0

因为每次重启express都挺慢的,所以求教有什么方法可以修改express的路由也不用重启

例如有一个路由 /api,我想修改回调函数的内容也不用重启express

暂时想到一个方法就是

app.use('/api', (req, res) => {
  require('./api-route')(req, res)
}

// ./api-route.js
module.exports = function(req, res) {
  // 可以随意改不用重启,因为是动态加载的
}

但缺点就是新增路由,例如增加一个/api2, 这样还是要重启express。

请问有什么更好的方法?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

无可置疑 2022-09-13 08:29:39

不重启怎么生效……
还是用 nodemon 吧

小巷里的女流氓 2022-09-13 08:29:39
npm install nodemon --save
nodemon server.js

只要你更新了,command+S保存修改的代码,服务就会自动刷新。也就能达到不用重启服务的问题

污味仙女 2022-09-13 08:29:39

每个 require 的 模块文件 会被 node 缓存起来
可以先 fs.watch(你的路由文件) 拿到 更改的文件名, 重置你的 缓存,或者清空
然后 拿到 新文件 , 用虚拟机 重新编译 代码

const {watch,readFileSync} = reuqire("fs")
const vm  = require("vm")

const file = await readFileSync(更改的文件名)
new vm.Script(file)

然后 重新 require(更改的文件名)
这样热更之后 应该就能达到你要的效果

https://cnodejs.org/topic/5977fe1068aa87c774e5ebf2

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文