Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从http请求运行节点localhost子进程?_Javascript_Node.js_Http - Fatal编程技术网

Javascript 如何从http请求运行节点localhost子进程?

Javascript 如何从http请求运行节点localhost子进程?,javascript,node.js,http,Javascript,Node.js,Http,我正在试验node和JavaScript,试图为raspberry pi上的电机创建一个无线控制器。基本上,我创建了一个节点localhost,然后使用了一个代理,这样我就可以通过internet访问它。我制作了一个带有滑块的html页面,当前该页面在本地主机的不同值上发送HTTP请求到本地主机的不同路径,该值应该运行一个节点子进程。问题是,节点没有将HTTP请求视为与打开页面相同的内容,因此它不会运行子进程。我试着寻找另一种选择,但我对这一切都不熟悉,什么也找不到。对不起,如果我解释错了或误用

我正在试验node和JavaScript,试图为raspberry pi上的电机创建一个无线控制器。基本上,我创建了一个节点localhost,然后使用了一个代理,这样我就可以通过internet访问它。我制作了一个带有滑块的html页面,当前该页面在本地主机的不同值上发送HTTP请求到本地主机的不同路径,该值应该运行一个节点子进程。问题是,节点没有将HTTP请求视为与打开页面相同的内容,因此它不会运行子进程。我试着寻找另一种选择,但我对这一切都不熟悉,什么也找不到。对不起,如果我解释错了或误用了一个术语。 JavaScript代码:

<script> 
            const Http = new XMLHttpRequest();
            const urlReverse='https://ip:3000/reverse';
            const urlDrive='https://ip:3000/drive';
            const urlNeutral='https://ip:3000/neutral';
            var rangeslider = document.getElementById("sliderRange"); 
            var output = document.getElementById("demo"); 
                        
            rangeslider.oninput = function() {
                if (this.value < 33){
                    output.innerHTML = 'Reverse';
                    Http.open("POST", urlReverse, true);
                    Http.send();
                }
                else if (this.value >= 33 && this.value <= 66){
                    output.innerHTML = 'Neutral';
                    Http.open("POST", urlNeutral, true);
                    Http.send();

                }
                else if (this.value > 66){
                    output.innerHTML = 'Forward';
                    Http.open("POST", urlDrive, true);
                    Http.send();
                }
            }

        </script> 

嗯,您发送的是POST请求,但仅绑定获取请求的路由


驱动器的
app.get()
s换成
app.post()

尝试了此操作,但无效。当我转到地址时,它会说无法获取/。是的,因为当您“手动”导航到某个地址时,浏览器会发送获取请求。您的JavaScript运行Http.open(“POST”,…)
发送POST请求。我再试了一次,但无法让它工作。不要说不能再得到了,但仍然不起作用。
const http = require('http');
var app = require('express')();

const { exec } = require("child_process");

app.get('/', function(req, res){
    console.log('')
    res.sendFile(__dirname + '/index.html');
});

app.get('/neutral', function(req, res){
    exec("python3 " + __dirname + "/neutral.py", (error, stdout, stderr) => {
        if (error) {
            console.log(`error: ${error.message}`);
            return;
        }
        if (stderr) {
            console.log(`stderr: ${stderr}`);
            return;
        }
        console.log(`stdout: ${stdout}`);
    });
    res.sendFile(__dirname + '/index.html');
});

app.get('/drive', function(req, res){
    exec("python3 " + __dirname + "/drive.py", (error, stdout, stderr) => {
        if (error) {
            console.log(`error: ${error.message}`);
            return;
        }
        if (stderr) {
            console.log(`stderr: ${stderr}`);
            return;
        }
        console.log(`stdout: ${stdout}`);
    });
    res.sendFile(__dirname + '/index.html');
});

app.get('/reverse', function(req, res){
    exec("python3 " + __dirname + "/reverse.py", (error, stdout, stderr) => {
        if (error) {
            console.log(`error: ${error.message}`);
            return;
        }
        if (stderr) {
            console.log(`stderr: ${stderr}`);
            return;
        }
        console.log(`stdout: ${stdout}`);
    });
    res.sendFile(__dirname + '/index.html');
    
});

// Start the server on port 8080
app.listen(8080, '127.0.0.1');
console.log('Node server running on port 8080');