nodejs 在更改时重新导入文件
nodejs re-import file when it changes
我的主要代码在 chokidar watched 文件夹下,当文件更改时它会发出一个事件
主要脚本是这个
const fileName = "test.ts";
import(fileName).then((t: any) => {
t.default();
});
这是文件 test.ts
export default () => {
console.log("aaa");
};
我更改后需要重新导入文件test.ts,例如我需要这个
START script
OUTPUT "aaa"
CHANGE test.ts from "console.log("aaa")" to "console.log("bbb")"
OUTPUT "bbb"
解决方案是使用 decache,完整代码是这个(使用 chokidar 文件夹观察器)
const folder = chokidar.watch("./myFolder", {
ignored: /(^|[\/\])\../,
persistent: true,
});
folder
.on("add", (fileName: string) => {
const mod = require(fileName)
mod.default();
.on("change", (fileName: string) => {
decache(fileName);
const mod = require(fileName)
mod.default();
})
我的主要代码在 chokidar watched 文件夹下,当文件更改时它会发出一个事件
主要脚本是这个
const fileName = "test.ts";
import(fileName).then((t: any) => {
t.default();
});
这是文件 test.ts
export default () => {
console.log("aaa");
};
我更改后需要重新导入文件test.ts,例如我需要这个
START script
OUTPUT "aaa"
CHANGE test.ts from "console.log("aaa")" to "console.log("bbb")"
OUTPUT "bbb"
解决方案是使用 decache,完整代码是这个(使用 chokidar 文件夹观察器)
const folder = chokidar.watch("./myFolder", {
ignored: /(^|[\/\])\../,
persistent: true,
});
folder
.on("add", (fileName: string) => {
const mod = require(fileName)
mod.default();
.on("change", (fileName: string) => {
decache(fileName);
const mod = require(fileName)
mod.default();
})