tsc 重新编译时如何热重载 express?
How do you hot-reload express when tsc recompiles?
我有一个简单的 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'))
试试我从 this 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];
});
});
});
请记住,您可能 运行 进入某些 。
当 front-end 和 back-end 在同一个 repo 中时,我通常使用 nodemon and concurrently 来满足我的热重载需求。
使用 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",
}
我有一个简单的 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'))
试试我从 this 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];
});
});
});
请记住,您可能 运行 进入某些
当 front-end 和 back-end 在同一个 repo 中时,我通常使用 nodemon and concurrently 来满足我的热重载需求。
使用 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",
}