2017-08-23 21 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(),因此它沒有返回任何東西。我剛剛測試過,它的工作原理。 :)