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

0 0 node.js express
闭麦听歌1v9
闭麦听歌1v9

声望值:118 0人

2019-01-10 15:36:09 提问

关注 0关注

收藏 0收藏, 21浏览

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

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

暂时想到一个方法就是

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

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

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

请问有什么更好的方法?

请先 登录 后评论

3个回答

  • Y_F_Timo130声望 2018-09-25 09:29

    不重启怎么生效……还是用 nodemon 吧
    请先 登录 后评论
  • 爬墙丶等红杏79声望 2018-09-25 09:30

    每个 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
    请先 登录 后评论
  • 写bug小shuai336声望 2018-09-25 09:30

    npm install nodemon --save nodemon server.js 只要你更新了,command+S保存修改的代码,服务就会自动刷新。也就能达到不用重启服务的问题
    请先 登录 后评论

注册新账号

悬赏追问
10
  • 10
  • 20
  • 50
  • 100
  • 200
  • 输入数值
发布追问