【发布时间】:2026-01-10 19:20:06
【问题描述】:
以下是我用打字稿编写的简单快速服务器的代码。
import express from 'express';
import bodyParser from 'body-parser';
import path from 'path';
import fs from 'fs';
import { DISTDIR } from './shared/constants';
import LoginController from './controllers/login';
// import * as test from '../../helpers/util';
function name() {
return {
name: 'Amaan'
};
}
class App {
public express: express.Application;
constructor() {
this.express = express();
this.middleware();
this.routes();
}
private middleware(): void {
this.express.use(function(req, res, next) {
res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Headers', '*');
next();
});
this.express.use(bodyParser.json());
this.express.use(bodyParser.urlencoded({ extended: false }));
}
private routes(): void {
this.express.get('/', function(req, res) {
res.sendFile(path.join(projectDir, 'dist', 'index.html'));
});
}
}
export default new App().express;
正如您在此处看到的,我正在发回包含我的 React 代码的 index.html。
this.express.get('/', function(req, res) {
res.sendFile(path.join(projectDir, 'dist', 'index.html'));
});
现在我面临一个问题,我需要从该请求中的任何 API 发送响应。像这样的:
function name() {
return {
name: 'Amaan'
};
}
private routes(): void {
this.express.get('/', function(_, res) {
res.setHeader('Content-type', 'text/html');
fs.readFile(path.resolve(DISTDIR, 'index.html'), null, (err, data) => {
if (err) {
res.writeHead(404);
res.write('Not found');
} else {
res.write(data);
}
res.setHeader('Content-type', 'text/json');
res.send(name());
res.end();
});
});
这给了我一个'Can\'t set headers after they are sent.' 错误。
请告诉我,如何将 json 响应与视图一起发送。
【问题讨论】:
标签: node.js reactjs typescript express webpack