【发布时间】:2021-06-24 01:05:09
【问题描述】:
这是我最基本的快递服务器
const express = require("express")
const fileUpload = require("express-fileupload")
const cors = require("cors")
const morgan = require("morgan")
const fs = require('fs')
const app = express()
app.use(fileUpload({
createParentPath: true
}))
app.use(cors());
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.use(morgan("dev"));
var result;
const XMLFileExists = fs.existsSync("uploads/uploadedXMLFile.xml") ? true : false;
const uploadFile = () => {
app.post("/fileUpload", async (req, res) => {
try {
if(!req.files){
res.send({
status: false,
message: "No files"
})
} else {
const {XMLFile} = req.files
XMLFile.mv("./uploads/" + "uploadedXMLFile.xml")
res.send({
status: true,
message: "File is uploaded"
})
}
} catch (e) {
res.status(500).send(e);
}
})
}
const runReader = () => {
// uploadFile()
if(XMLFileExists){
result = fs.readFileSync("uploads/uploadedXMLFile.xml", "utf-8");
app.get('/fileReader', (req, res) => res.send(result));
}
}
uploadFile()
runReader()
const port = process.env.PORT || 5000
app.listen(port, () => console.log(`Server is running on port ${port}`))
如您所见,它有两个功能。一个负责处理名为uploadFile() 的文件的上传,另一个负责读取名为runReader() 的文件。
过程
我上传了一个文件 => 将其保存到目录中的 upload/ => 文件被读取并在 localhost:5000/fileReader 处可用,供前端访问。
问题是,每当我上传一个file1,然后是一个新的file2,即使使用nodemon,服务器也不会重新加载,而localhost 可用的是file1。
当我手动为 nodemon 执行 Ctrl + S 以重新启动服务器时,它得到了修复。
我想在文件上传时重新启动服务器,以便在localhost 获得最新文件
【问题讨论】:
-
我可以在我的代码中添加一些东西以使服务器以编程方式重新启动吗?
-
上传后直接运行
runReader -
@ThomasSablik 由于某种原因不起作用。我对后端很陌生,所以我不知道为什么会这样
-
您正在向路由注册一个函数。我以为您可以覆盖该功能。上传后可以更新
result。 -
@ThomasSablik 你能告诉我怎么做吗?
标签: javascript node.js express server