1

我有一个简单的 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'))
4

1 回答 1

1

试试我从这个 repo中获取的这个片段。

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];
    });
  });
});

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

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

使用 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",
}
于 2020-10-26T01:20:33.603 回答