在致电expressApp.use(express.static(path.join(__dirname, '/../frontend/dist')));
之前,我需要修改html代码。我基本上需要做的是在两个中间件函数中插入元标记。我想出了怎么做。但是用我的解决方案,我在另一个内部调用了中间件函数。
let frontend = await fs
.readFileSync(path.join(__dirname, '/../frontend/dist/index.html'))
.toString('utf8');
expressApp.use((req, res, next) => {
//...
frontend = frontend.replace(
'<meta device="ABC" />',
'<head><meta device="' + deviceId + '"/>'
);
next();
});
expressApp.use((req, res, next) => {
const language = req.get('language') || 'en_GB';
logger.info('language:' + language);
this._languageModule.setLanguage(language);
frontend = this._languageModule.insertSIDs(frontend);
logger.info(frontend);
expressApp.use(express.static(path.join(__dirname, '/../frontend/dist'))); // nested middleware function
next();
});
/** set up all the express routes **/
expressApp.get('/', (req, res) => {
res.send(frontend);
});
如果我不打电话给expressApp.use(express.static(path.join(__dirname, '/../frontend/dist')));
嵌套-像这样:
expressApp.use((req, res, next) => {
const language = req.get('language') || 'en_GB';
logger.info('language:' + language);
this._languageModule.setLanguage(language);
frontend = this._languageModule.insertSIDs(frontend);
logger.info(frontend);
next();
});
expressApp.use(express.static(path.join(__dirname, '/../frontend/dist')));
HTML不会被修改。
答案 0 :(得分:1)
您可能应该编写自己的中间件来处理文件的修改。这是一个未经测试的示例。但这很粗糙。它基于$(document).on("click", ".edu_add_button", function () {
...
...
...
...
$(".deg_date").datepicker("setDate", currentDate);
});
函数
.content {
position: unset !important;
width: 100% !important;
padding: 20px;
}
对于原始资源,请查看以下github页面: https://github.com/expressjs/serve-static/blob/master/index.js