2017-08-23 26 views
0

在此问题上需要帮助: 使用涉及代码编辑器和评估来自USER的代码的项目。使用axios不发出回复的POST请求

在我的后端(Express)上创建一个路由和一个函数,其中函数将用户编写的代码,评估并返回其值。

正在使用前端(REACT)的axios发送请求,以便后端对用户代码进行评估并将响应发送回前端。

我完成了什么: 通过发送请求发送用户代码到后端。 代码在使用沙箱的后端进行评估。

我有什么问题? 将响应发送回前端。帖子req不会回复回复。

下面是代码:任何想法/反馈?

BACKEND:

const express = require('express'); 
const codeRoutes = express.Router(); 
const codeHelper = require('../services/code/code-helper'); 

codeRoutes.post('/', codeHelper.codeEval, (req, res) => {res.json({ 
    data: res.result 
}) 
}); 

module.exports = codeRoutes; 

辅助函数:

const vm = require('vm'); 


let codeEval = (req, res) => { 
    let result; 
    let code = req.body.code; 
    const sandbox = {}; 
    vm.createContext(sandbox); 
    result = vm.runInContext(code, sandbox); 
    console.log(result); // this does console.log in the terminal 
    return result; 
} 

module.exports = { codeEval }; 

前端:

handleExecuteCode = (code) => {  
axios.post('/code', { 
    code: code, 
}).then(res => { 
    console.log('frontend received--->', res) 
}).catch(err => console.log(err)); 
} 

<button onClick={() => 
this.handleExecuteCode(this.state.code)}>EXECUTE</button> 
+0

您的快速设置是完全错误的。你能发布整个后端代码吗?你甚至在后端收到POST请求吗? – lukaleli

+0

其实只是想通了。我的设置是正确的。我没有使用并在我的帮助函数中调用next(),因此它没有返回任何东西。我刚刚测试过,它的工作原理。 – Ash

回答

0

实际上只是理解了它。我的设置是正确的。我没有使用并在我的帮助函数中调用next(),因此它没有返回任何东西。我刚刚测试过,它的工作原理。 :)