我正在使用Node API,可用于在终端上运行一些命令。
例如,当我转到:http://localhost:3000/runLS
时,命令ls -la
在我的工作目录上运行,并且输出以JSON的形式返回给API。
我已经能够从API运行终端命令。
我有两个代码文件:
commands.js,这是我定义命令的地方。
var exec = require('child_process').exec;
function puts(error, stdout, stderr) {
console.log(stdout)
}
const runLS = (request, response) => {
exec("ls -la", puts, (error, results) => {
if(error) {
throw error
}
})
}
module.exports = {
runLS
}
我也有app.js:
const express = require('express')
const cors = require('cors')
const app = express()
const port = 3000
var corsOptions = {
origin: '*',
credentials: true };
app.use(cors(corsOptions));
app.get('/', (request, response) => {
response.json({ info: 'Commandline status API ' })
})
const comm = require('./commands_test.js')
app.get('/runLS', comm.runLS)
app.listen(port, () => {
console.log(`App running on port ${port}.`)
})
运行此命令然后转到http://localhost:3000/runLS
时,将在终端上显示标准输出。但是,我希望它以JSON的形式出现在浏览器中。
我编辑了command.js文件,如下所示:
var exec = require('child_process').exec;
const runLS = (error, stdout, stderr) => {
exec("ls -la", (error, results) => {
if(error) {
throw error
}
stdout.status(200).json(stdout.rows)
})
}
module.exports = {
runLS
}
然后编辑我的app.js:
const express = require('express')
const bodyParser = require('body-parser')
const cors = require('cors')
const app = express()
const port = 3000
var corsOptions = {
origin: '*',
credentials: true };
app.use(cors(corsOptions));
app.use(bodyParser.json())
app.use(
bodyParser.urlencoded({
extended: true,
})
)
app.get('/', (request, response) => {
response.json({ info: 'Commandline status API ' })
})
const comm = require('./commands_test.js')
app.get('/runLS', comm.runLS)
app.listen(port, () => {
console.log(`App running on port ${port}.`)
})
当我去找Endpoin时,什么也没得到,终端上也没有错误。我是Node noob,所以希望您能用简单的语言进行解释。 有任何想法吗? [如果有什么用,我将作为终端在Windows上的Git Bash上工作]
答案 0 :(得分:0)
stdout.rows
不存在,因为它是明确的响应对象。
var exec = require('child_process').exec;
const runLS = (req, res, next) => {
exec("ls -la", (error, results) => {
if (error) {
res.status(400).send(error);
}
res.status(200).json({
results: results
})
})
}
module.exports = {
runLS
}