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>
您的快速设置是完全错误的。你能发布整个后端代码吗?你甚至在后端收到POST请求吗? – lukaleli
其实只是想通了。我的设置是正确的。我没有使用并在我的帮助函数中调用next(),因此它没有返回任何东西。我刚刚测试过,它的工作原理。 – Ash