Javascript 发送到客户端Expressjs路由器后无法设置标头
我在express js上遇到错误无法设置头,我想问题是必须编写setHeader,我已设置,但仍然无法,这是我的代码:Javascript 发送到客户端Expressjs路由器后无法设置标头,javascript,express,vue.js,Javascript,Express,Vue.js,我在express js上遇到错误无法设置头,我想问题是必须编写setHeader,我已设置,但仍然无法,这是我的代码: router.get('/cek', (req, res) => { const child = execFile(commandd, ['-c', 'config', 'GSM.Radio.C0']); child.stdout.on('data', function (data) { value = (JSON.stringify(data
router.get('/cek', (req, res) => {
const child = execFile(commandd, ['-c', 'config', 'GSM.Radio.C0']);
child.stdout.on('data',
function (data) {
value = (JSON.stringify(data));
x = value.split('.');
y = JSON.stringify(x[2])
result = y.replace(/\D/g, "");
res.setHeader('Content-Type', 'text/html');
res.send(result);
}
);
child.stderr.on('data',
function (data) {
console.log('err data: ' + data);
}
);
});
我花了两天时间来修复这个错误,但仍然无法,任何人都可以帮助吗?如所述,这通常是在发送res.send并且仍有数据正在处理后造成的。。。您的解决方法可能只是在发送数据之前使用res.send
接收所有数据。你可以试试这个
异步函数executeCommand(){
返回新承诺((解决、拒绝)=>{
const child=execFile(commandd,['-c','config','GSM.Radio.C0']);
child.stdout.on('data',
功能(数据){
value=(JSON.stringify(数据));
x=值。拆分('.');
y=JSON.stringify(x[2])
结果=y。替换(/\D/g,“”);
决心(结果);
}
);
child.stderr.on('data',
函数(err){//为err重命名了数据以进行澄清
拒绝(错误);
}
);
});
}
router.get('/url',异步(req,res)=>{
试一试{
const result=await executeCommand();
res.setHeader('Content-Type','text/html');
res.send(结果);
}捕获(错误){
//有一个错误,我投了500
res.sendStatus(500);
}
});
请注意,只有当您确信数据被触发一次时,才会有效,如所示,
数据
事件将多次触发,一次从标准输出的文本产生一块。你似乎把它当作一次就可以通过所有的文本。假设文本相对较少,您可以将数据
事件中的所有区块串联起来,然后在关闭
事件中发送。根据具体情况,还可以使用其他方法。此错误通常发生在调用res.send
方法后尝试执行某项操作时。您可以尝试添加两件事:1)在res.send之前添加一个return,因此/cek
的请求将被阻塞;2)在stderr上添加一个res.send(err)。在这两种情况下,都有可能引发你的错误谢谢你@FedericoIbba,在下面的回答中,这是有效的。。