写完结束错误

时间:2018-04-28 15:16:51

标签: node.js import

import http = require('http');
const fs = require("fs");


var port = process.env.port || 8888
var i = 1;
var contents;

http.createServer(function (req, res) {

    res.writeHead(200, { "Content-Type": "text/html" });

    console.log(i++ + "\n" + req.connection.remoteAddress);


    fs.open('1.html', "a+", (Error, fd) => {

        res.write(fd);

    });

    res.end();

}).listen(port);

好的,我们这里有代码,问题是我有一个Write after end错误,即使在代码结尾有一个写入和结束,所以如果有人能告诉我我做错了什么,请。(我试图从docs和writ函数复制所有内容。)

HTML code:

script src="1.js"
script

这个JS也是:

    var a = prompt("a size",0);
var h = prompt("h size",0);
var b = prompt("b size",0);
var c = prompt("c size",0);
var angle_a = prompt("angel acros a",0);
var angle_b = prompt("angel acros b",0);
var angle_c = prompt("angel aacros c",0);
var Perimetr =prompt("P",0);
var R_In = prompt("radius In",0);
var R_Out = prompt("radius Out",0);
var S=0;
var angle_a_sin = Math.sin((angle_a /180) * Math.PI);
var angle_b_sin = Math.sin((angle_b /180) * Math.PI);
var angle_c_sin = Math.sin((angle_c /180) * Math.PI);

var angle_a_cos = Math.cos((angle_a /180) * Math.PI);
var angle_b_cos = Math.cos((angle_b /180) * Math.PI);
var angle_c_cos = Math.cos((angle_c /180) * Math.PI);

a = a *1;
b = b *1;
c = c *1;

if(Perimetr==0&& a>0 && b>0&& c>0){
    Perimetr=a+b+c-0;
}

if(Perimetr>0&& a>0 && b>0 && c==0){
    c=Perimetr-a-b;
}

if(Perimetr>0&& a>0 && b==0 && c>0){
    b=Perimetr-a-c;
}

if(Perimetr>0&& a==0 && b>0 && c>0){
    a=Perimetr-c-b;
}

if(a>0 && h>0){
    S=(a*h)/2;
}
if(a>0 && b > 0 && angle_a_sin > 0 &&S==0){
    S=(a*b*angle_a_sin)/2;
}
if(Perimetr>0 &&S==0){
    S=Math.sqrt(Perimetr*(Perimetr-a)*(Perimetr-b)*(Perimetr-c));
}
if(a>0&&b>0&&c>0&&R_In>0 &&S==0){
    S=(a*b*c)/4*R_In;
}
if(Perimetr>0&&R_Out>0 &&S==0){
    S=Perimetr*R_Out;
}
if(a>0&&b>0&&c>0){
    angle_a_cos=((b*b)+(c*c)-(a*a))/(2*b*c);
    angle_a=Math.acos(angle_a_cos) *180/Math.PI;
}
if(a>0&&b>0&&c>0){
    angle_b_cos=((a*a)+(c*c)-(b*b))/(2*a*c);
    angle_b=Math.acos(angle_b_cos) *180/Math.PI;
}
if(a>0&&b>0&&c>0){
    angle_c_cos=((b*b)+(a*a)-(c*c))/(2*a*b);
    angle_c=Math.acos(angle_c_cos) *180/Math.PI;
}
if(S==0){
        alert("Not enough data");
    }

谢谢大家。

1 个答案:

答案 0 :(得分:1)

  

错误:写完后

您收到此错误是因为您在发送响应对象后正在写入该响应对象。理想情况下,订单应该是

res.status(msg);
res.end();

另外,你正在通过fd写作。这可能会导致

  

TypeError [ERR_INVALID_ARG_TYPE]:第一个参数必须是字符串或缓冲区之一

根据docs,您需要传递stringBuffer

对您的代码进行更改。

http.createServer(function (req, res) {
  res.writeHead(200, {"Content-Type": "text/html"});

  console.log(i++ + "\n" + req.connection.remoteAddress);

  fs.open('1.html', "a+", (Error, fd) => {
    res.write(fd+'');
    res.end();
  });

}).listen(port);