Node.js NodeJS服务器加载循环

Node.js NodeJS服务器加载循环,node.js,Node.js,每当我尝试重新启动服务器时,它都会继续加载循环,直到我停止加载时才显示任何结果我尝试在没有您编写的文件替换逻辑的情况下运行您的代码,但出现了此错误 \u http\u outgoing.js:679 抛出新错误\u无效的\u参数\u类型('第一个参数', ^ TypeError[ERR\u INVALID\u ARG\u TYPE]:第一个参数的类型必须为string或Buffer的实例。收到了数组的实例 在写入时(_http_outgoing.js:679:11) 在ServerRespons

每当我尝试重新启动服务器时,它都会继续加载循环,直到我停止加载时才显示任何结果

我尝试在没有您编写的文件替换逻辑的情况下运行您的代码,但出现了此错误

\u http\u outgoing.js:679
抛出新错误\u无效的\u参数\u类型('第一个参数',
^
TypeError[ERR\u INVALID\u ARG\u TYPE]:第一个参数的类型必须为string或Buffer的实例。收到了数组的实例
在写入时(_http_outgoing.js:679:11)
在ServerResponse.write(_http_outgoing.js:644:15)
您必须将支持的内容类型发送到
res.write

const realtimeData=arrayDatda.map((val)=>replaceVal(homefile,val)).join(“”

realtimeData
是一个数组,不受支持

consthttp=require('http');
常数fs=要求('fs');
const requests=require('requests');
//const homefile=fs.readFileSync(“./home.html”,“utf-8”);
//常量替换值=(临时值,原始值)=>{
//让温度=tempVal.replace(`{%tempVal%}`,orgVal.main.temp);
//返回温度;
// }
const server=http.createServer((req,res)=>{
如果(req.url=='/'){
请求('https://api.openweathermap.org/data/2.5/weather?q=Pune&appid=4bebabe44d8d1f07b79b9bbc8ed9dd33')
.on('data',函数(块){
const objdata=JSON.parse(chunk);
常数arrayDatda=[objdata];
控制台日志(arrayDatda);
//const realtimeData=arrayDatda.map((val)=>replaceVal(homefile,val)).join(“”)
//console.log(realtimeData)
//将arrayDatda转换为字符串并发送工作
res.write(JSON.stringify(arrayDatda))
})
.on('end',函数(err){
如果(错误){
log('由于错误而关闭的连接',err);
}
res.end(“工作”);
});
}
})
监听(8080,'127.0.0.1');
因此,在使用从API收到的数据替换文件后,必须在
res.write
中提供该文件,而不是
realtimedata
变量(即数组)中提供该文件

我建议再次学习nodehttpserver的基础知识,了解如何为不同的内容类型和静态文件提供服务

这是一个很好的初学者博客:

我不知道这是否与您的问题有关,但您无法可靠地执行
const objdata=JSON.parse(chunk);
因为您无法保证一个chunk将是一整段可解析JSON。它可能只是整段JSON的一部分。
const http = require('http');
const fs = require('fs');
const requests = require('requests');

const homefile = fs.readFileSync("./home.html", 'utf-8');
const replaceVal = (tempVal, orgVal) => {
    let temperature = tempVal.replace(`{%tempVal%}`, orgVal.main.temp);
    return temperature;
}
const server = http.createServer((req, res) => {
    if (req.url == '/') {
        requests('https://api.openweathermap.org/data/2.5/weather?q=Pune&appid=4bebabe44d8d1f07b79b9bbc8ed9dd33')
            .on('data', function (chunk) {
                const objdata = JSON.parse(chunk);
                const arrayDatda = [objdata];
                console.log(arrayDatda);
                const realtimeData = arrayDatda.map((val) => replaceVal(homefile, val)).join("")
                // console.log(realtimeData)
                res.write(realtimeData)
            })
            .on('end', function (err) {
                if (err) {
                    console.log('connection closed due to errors', err);
                }
                res.end("working");
            });
    }
})
server.listen(80, '127.0.0.1');