【问题标题】:How do you hot-reload express when tsc recompiles?tsc 重新编译时如何热重载快递?
【发布时间】:2021-02-08 07:28:56
【问题描述】:

我有一个简单的 nodeJS 服务器,我将它设置为使用 tsc --watch 监视代码的变化。我想知道的是如何设置express 以在我对代码进行更改时重新加载(注意我是在 Windows 上专门询问的)?

我假设这与 chokidar 有关,其中我有以下 index.ts 代码

import AWS from "aws-sdk";
import express from "express";
import chokidar from "chokidar";

console.log(AWS.S3);

const route = express.Router();

route.get("/signed-url-put-object", async (req, res) => {
  console.log(process.env)
});

if (process.env.NODE_ENV !== "production") {
  const watcher = chokidar.watch("./index.js");
  watcher.on("all", ()=> {
    console.log("reloading...");
    // what do I do here?
  })
  
}
express().listen(3000, ()=>console.log('listening'))

【问题讨论】:

    标签: node.js typescript express chokidar


    【解决方案1】:

    试试我从this repo 获取的这个 sn-p。

    watcher.on('ready', function() {
      watcher.on('all', function() {
        console.log("Clearing /server/ module cache from server");
        Object.keys(require.cache).forEach(function(id) {
          if (/[\/\\]server[\/\\]/.test(id)) delete require.cache[id];
        });
      });
    });
    

    请记住,您可能会遇到一些issues

    当前端和后端都在同一个仓库中时,我通常使用nodemonconcurrently 来满足我的热重载需求。

    使用 concurrently 和 nodemon,我会得到类似的东西。

    "scripts": {
        "start": "concurrently \"yarn start:fe\" \"yarn start:watch\"",
        "start:watch": "nodemon --inspect=5858 ./server/server.ts",
        "start:be": "set TS_NODE_PROJECT=./tsconfig.server.json && node --inspect=5858 -r ts-node/register ./server/server.ts",
        "start:fe": "react-app-rewired start --scripts-version react-scripts",
    }
    

    【讨论】:

    • 你能用“nodemon”写一个答案吗?这个包看起来很有趣。您是否使用concurrently 以便可以启动tsc --watchnodemon 之类的东西?
    • 对不起,我看错了原来的问题,我只使用concurrently,所以我可以同时启动前端。在您的情况下,我不知道如何使用 nodemon 重新加载 express,除非您也使用 ts-node
    猜你喜欢
    • 2019-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-10
    • 2013-09-04
    • 1970-01-01
    • 2021-11-04
    • 2023-03-15
    相关资源
    最近更新 更多