0

NodeJsを使用して簡単なサーバー設定を行いました。そこからサーバー上のターミナルにコマンドを送信します。child_process.execを使用してコマンドを返す404

child_process.execを使用してコマンドを送信しようとしていますが、端末から実行すると正常に動作します。

問題は、POSTメソッド/ unLockが見つからないということです。応答として私は得る。

POST /unLock 404 1.770 ms - 1186 

私は、以下の設定したサーバーとルート/ビューのコードを含めました、私はノードに新たなんだと任意の助けをいただければ幸いですので、学ぶことをしようとしています。

var express = require('express'); 
var router = express.Router(); 

router.get('/', function(req, res){ 
    res.render('index', { 
    title: 'Home' 
    }); 
}); 

router.get('/login', function(req, res){ 
    res.render('login', { 
    title: 'login' 
    }); 
}); 

router.get('/unLock', function(req, res){ 
    console.log("hello"); //this doesnt work 
}); 

router.get('/contact', function(req, res){ 
    res.render('contact', { 
    title: 'Contact' 
    }); 
}); 

module.exports = router; 

index.ejs

<!DOCTYPE html> 
<html> 
<script language="JavaScript" type="text/javascript" src="/javascripts/jquery.min.js"></script> 
<script> 

function unLock() { 
    $.ajax({ 
    type: 'POST', 
       url: '/unLock', 
    data: '', 
    success: function (data) { 
       } 
     }); 
} 
//call button.js 
</script> 

    <head> 
    <title><%= title %></title> 
    <link rel='stylesheet' href='/stylesheets/style.css' /> 
    </head> 
    <body> 
    <h1><%= title %></h1> 
    <p>Welcome to SecureLock - beta 1.0</p> 
    <form><input type='button' value='unLock' onclick='unLock()'/></form> 
    </body> 

</html> 

var express = require('express'); 
var path = require('path'); 
var favicon = require('serve-favicon'); 
var logger = require('morgan'); 
var cookieParser = require('cookie-parser'); 
var bodyParser = require('body-parser'); 

var index = require('./routes/index'); 
var users = require('./routes/users'); 
var exec = require('child_process').execSync; 

var util = require('util') 
//var exec = require('child_process').exec; 
var app = express(); 

app.use(bodyParser.json());  // to support JSON-encoded bodies 
app.use(bodyParser.urlencoded({  // to support URL-encoded bodies 
    extended: true 
})); 
// view engine setup 
app.set('views', path.join(__dirname, 'views')); 
app.set('view engine', 'ejs'); 


app.get('/javascript/jquery.min.js', function (req, res) { 
     res.sendFile(__dirname + "/javascript" + "/jquery.min.js"); 

}); 

// uncomment after placing your favicon in /public 
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico'))); 
app.use(logger('dev')); 
app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({ extended: false })); 
app.use(cookieParser()); 
app.use(express.static(path.join(__dirname, 'public'))); 

app.use('/', index); 
app.use('/users', users); 

// catch 404 and forward to error handler 
app.use(function(req, res, next) { 
    var err = new Error('Not Found'); 
    err.status = 404; 
    next(err); 
}); 

app.post('/', function(req, res) { 
    console.log(req.body); 
    res.send(200); 

    }); 

//trying to send command here 
//recieiving 404 
app.post('/unLock', function (req, res) { 
exec("ls -la", {stdio:[0,1,2]}); 
res.send(200); 

console.log("button clicked"); 
}); 

// error handler 
app.use(function(err, req, res, next) { 
    // set locals, only providing error in development 
    res.locals.message = err.message; 
    res.locals.error = req.app.get('env') === 'development' ? err : {}; 

    // render the error page 
    res.status(err.status || 500); 
    res.render('error'); 
}); 


module.exports = app; 

index.jsありがとう

app.js。あなたのunLock() JSで

答えて

1

はそうPOSTへの対応へのルートがありませんあなたはこの方法POSTとAJAX呼び出しを行うが、あなたのルートでご

router.get('/unLock', function(req, res){ 
    ... 
}); 

を持っている機能します。上記の行をrouter.postまたはに変更して、AJAXメソッドをGETに変更します。実際にAJAX呼び出しを使用してサーバーにデータを送信していないのであれば、おそらく後者です。

関連する問題