又一个“发送后无法设置标题”

我使用node.js服务器向我的前端发送响应。 我在我的MyNodeServer.js代码中添加setHeaders时收到“发送后无法设置标题”错误。 我的代码已被粘贴在下面。

web server listening to port 8080, started _http_outgoing.js:367 throw new Error('Can\'t set headers after they are sent.'); ^ Error: Can't set headers after they are sent. at ServerResponse.setHeader (_http_outgoing.js:367:11) at ServerResponse.writeHead (_http_server.js:183:21) at ...\MyNodeServer.js:71:26 at FSReqWrap.readFileAfterClose [as oncomplete] (fs.js:416:3) 

MyNodeServer.js

 var myHttp = require("http"); var url = require("url"); var qString = require("querystring"); var fs = require('fs'); var myEvents = require('./customEvents'); var myAppWebServer = myHttp.createServer(function(request, response){ response.setHeader('Access-Control-Allow-Origin', 'http://localhost:8080'); response.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE'); response.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type'); response.setHeader('Access-Control-Allow-Credentials', true); if (request.method === "OPTIONS") { return response.status(200).end(); } var query =url.parse(request.url).query; response.writeHead(405, {'content-type':'text/html'}); var yourVisit; var pName = url.parse(request.url).pathname; if(pName==='/register'){ response.end('{ "name":"xxx", "city":"yyy"}'); }else if (pName==='/login'){ fs.readFile("pages/login.html", function (error, pgResp) { response.writeHead(200, { 'Content-Type': 'text/html' }); response.write(pgResp); response.end(); }); } }); myAppWebServer.listen(8080); 

响应正在多次发送。 (由于名誉低,无法评论)

状态码被写入两次。

更改

 response.writeHead(405, {'content-type':'text/html'}); 

 response.setHeader('content-type', 'text/html');