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